[ES] El presente Trabajo de Fin de Grado propone la aceleración por hardware del proceso de simulación de qubits afectados por errores probabilísticos, sin modificar el entorno de trabajo ni las herramientas habituales del usuario. Este enfoque está pensado para investigadores y desarrolladores que no están familiarizados con el diseño hardware, pero que requieren simulaciones más rápidas que las que permiten los métodos tradicionales en software. El sistema se implementa utilizando Vitis HLS para desarrollar un módulo hardware que posteriormente se integra en un diseño completo mediante Vivado y que se despliega sobre una FPGA PYNQ-Z1. Este tipo de simulación se apoya en herramientas como STIM, una librería ampliamente utilizada para la generación y simulación de modelos de error en circuitos cuánticos. El acelerador reproduce en hardware uno de los cuellos de botella en el flujo de trabajo con STIM: la generación masiva de errores aleatorios a partir de distribuciones probabilísticas. La interacción con el acelerador se realiza desde Jupyter Notebook, facilitando así su integración manteniendo intacta la forma habitual de trabajo.
[ES] El presente Trabajo de Fin de Grado propone la aceleración por hardware del proceso de simulación de qubits afectados por errores probabilísticos, sin modificar el entorno de trabajo ni las herramientas habituales del usuario. Este enfoque está pensado para investigadores y desarrolladores que no están familiarizados con el diseño hardware, pero que requieren simulaciones más rápidas que las que permiten los métodos tradicionales en software. El sistema se implementa utilizando Vitis HLS para desarrollar un módulo hardware que posteriormente se integra en un diseño completo mediante Vivado y que se despliega sobre una FPGA PYNQ-Z1. Este tipo de simulación se apoya en herramientas como STIM, una librería ampliamente utilizada para la generación y simulación de modelos de error en circuitos cuánticos. El acelerador reproduce en hardware uno de los cuellos de botella en el flujo de trabajo con STIM: la generación masiva de errores aleatorios a partir de distribuciones probabilísticas. La interacción con el acelerador se realiza desde Jupyter Notebook, facilitando así su integración manteniendo intacta la forma habitual de trabajo.
La implementación de métodos eficientes para la corrección de errores cuánticos requiere la utilización de códigos de baja redundancia, cuya función es minimizar el número de qubits físicos necesarios por qubit lógico.Los códigos polares cuánticos son candidatos para este fin debido a que por definición pueden alcanzar la capacidad del canal mediante una codificación recursiva eficiente. Sin embargo, la fase de preparación del estado lógico constituye un cuello de botella, frecuentemente condicionado por un elevado sobrecoste de puertas y medidas. En el presente estudio, se expone una metodología para el código polar Q1 que mitiga el sobrecoste de recursos mediante una optimización del circuito en el número de puertas y medidas.La propuesta ha sido evaluada mediante el entorno de simulación Stim, utilizando modelos de ruido a nivel de circuito sobre una topología que presenta conectividad all-to-all.El análisis realizado revela que la optimización de este trabajo aumenta la tasa de preparación de estados lógicos exitosos mientras mantiene o reduce las tasas de error lógico. A modo de ejemplo, para N=16, las optimizaciones producen mejoras en ambos estados lógicos.Para el estado lógico |+>, la propuesta incrementa la tasa de preparación hasta en un 34%, y mejora las tasas de error lógico hasta en un 63% en comparación con los valores de referencia. De igual manera, se evidencia un incremento en la tasa de preparación de hasta el 42% y una reducción en la tasa de error lógico de hasta el 69% para el estado lógico |0>.
La tesis se centra en el problema de la simulación de un computador cuántico teórico (libre de errores) y de propósito general, basado en el modelo de circuitos. El problema es del tipo NP, por lo que se ha abordado en primer lugar tratando de detectar los cuellos de botella existentes tanto en espacio como en tiempo y después realizando propuestas que los van reduciendo uno por uno. De esta forma, si bien sigue siendo imposible ejecutar una simulación demasiado grande en un tiempo razonable, ha sido posible reducir los recursos necesarios para hacer una misma simulación. Gran parte del trabajo realizado ha consistido en hacer modificaciones sobre las estructuras de datos utilizadas para modelar el problema desde su perspectiva matricial. El resultado se ha materializado a través de mejoras implementadas dentro de dos proyectos de software libre y de código abierto (Free/Libre and Open Source Software en inglés) (FLOSS): QSimov y Doki, centrados en permitir al usuario trabajar en computación cuántica con pocos recursos y tratando que el paso del diagrama de un circuito cuántico a su código sea lo más inmediato posible.
La computación cuántica promete una potencia computacional sin precedentes al aprovechar principios mecánicos cuánticos como la superposición y el entrelazamiento. Sin embargo, el hardware cuántico actual está limitado por la cantidad de cúbits y las altas tasas de error, lo que dificulta la prueba de algoritmos cuánticos complejos a escala. Como resultado, los simuladores cuánticos basados en software que se ejecutan en computadoras clásicas se han convertido en herramientas esenciales para explorar algoritmos y rincipios cuánticos. Estos simuladores, aunque potentes, requieren recursos de memoria significativos debido al crecimiento exponencial de los tamaños de los estados cuánticos. Por ejemplo, representar un estado de N cúbits requiere 2^N números complejos, lo que supone una carga inmensa para los sistemas de memoria clásicos. Este trabajo investiga estrategias de gestión de memoria para optimizar el uso de recursos en simuladores de computación cuántica. Las técnicas exploradas incluyen la eliminación de estados, las estructuras de datos de estado completo, las optimizaciones de aplicaciones de puertas cuánticas, la compresión de datos y los enfoques de memoria distribuida. El objetivo es reducir el consumo de memoria al tiempo que se preserva la precisión de las simulaciones cuánticas. El estudio implementa estas estrategias en un simulador cuántico, proporcionando una comparación detallada de su rendimiento en varios algoritmos cuánticos. Los resultados resaltan las compensaciones entre la eficiencia computacional y el uso de la memoria, ofreciendo información sobre los enfoques más efectivos para escalar simulaciones cuánticas en hardware clásico.
[ES] La computación cuántica aprovecha las propiedades físicas de los qubits, como la superposición y el entrelazamiento, para obtener mayor rendimiento y capacidad de cómputo. Sin embargo, los qubits son intrínsecamente inestables y se degradan con rapidez, lo cual se conoce como decoherencia. Dicho efecto hace que los qubits se vuelvan más sensibles al ruido ambiental. La corrección cuántica de errores (QEC) es fundamental para detectar y corregir errores en tiempo real, ya que los retrasos pueden provocar fallos irreversibles en los cálculos. El escaso margen de tiempo disponible exige algoritmos de descodificación de baja latencia. Esta tesis busca estudiar la viabilidad de la implementación del decodificador de programación lineal basada en síndromes (SB-LP) para códigos cuánticos de verificación de paridad de baja densidad (QLDPC) explorando diferentes enfoques que aceleran su funcionamiento en plataformas hardware adecuadas para la decodificación en tiempo real en sistemas de computación cuántica tolerantes a fallos utilizando síntesis de alto nivel (HLS) en el entorno AMD. En primer lugar, el algoritmo se implementará en MATLAB para una mejor comprensión del mismo. Posteriormente, se traducirá a una implementación de software en C/C++ como transición para, en última instancia, implementarlo en hardware optimizado, haciendo hincapié en el paralelismo y la segmentación para reducir la latencia de descodificación. Las optimizaciones clave incluyen la segmentación y el paralelismo basado en el flujo de datos para explotar las capacidades de la FPGA.
Este Trabajo de Fin de Grado tiene como propósito explorar y divulgar los avances más recientes en el fascinante campo de la computación cuántica, centrándose especialmente en su integración con el aprendizaje profundo. En concreto, se analizará el prometedor enfoque de las redes neuronales cuánticas (Quantum Neural Networks, QNN). La estructura del trabajo se organiza en cuatro bloques temáticos bien diferenciados que permiten abordar de forma progresiva los conceptos clave: En primer lugar, se explican los fundamentos de las Redes Neuronales Clásicas, donde se analizan conceptos como las funciones de activación, las funciones de pérdida, el algoritmo de retropropagación y el proceso completo de entrenamiento. En segundo lugar, nos adentraremos en los pilares de la computación cuántica. Estudiaremos elementos fundamentales como el qubit y las puertas cuánticas, componentes que permiten manipular estados cuánticos. A continuación, con ambas bases teóricas establecidas, abordaremos el diseño de una red neuronal cuántica, centrando la atención en los modelos basados en circuitos variacionales. Además del desarrollo teórico se incluirán ejemplos prácticos y detallados utilizando conjuntos de datos reales. Estos casos permitirán ilustrar de manera tangible cómo se aplica una red neuronal cuántica a problemas concretos, desde la preparación de los datos hasta la interpretación de resultados. Finalmente, se expondrán las principales limitaciones y desafíos que actualmente enfrentan las redes neuronales cuánticas, incluyendo aspectos como la corrección de errores.
La simulación clásica de circuitos cuánticos sigue siendo un recurso indispensable para diseñar, validar y analizar algoritmos cuánticos. No obstante, en los simuladores de estado completo su alcance práctico queda limitado por el crecimiento exponencial de la memoria requerida para almacenar el vector de estado. En respuesta a esta restricción, el presente trabajo estudia la compresión sin pérdida como mecanismo de gestión de memoria en simuladores cuánticos tipo Schrödinger, con el objetivo de reducir la huella de almacenamiento sin introducir alteraciones numéricas en la simulación. La propuesta comprende la selección de un simulador base y de una biblioteca de compresión adecuada, el diseño de una arquitectura de almacenamiento por bloques con descompresión selectiva y caché LRU, su implementación en TMFQSfullstate mediante Blosc2 y su evaluación experimental frente a una ejecución de referencia sin compresión y a una estrategia con pérdida controlada basada en ZFP. La validación se realizó con circuitos representativos de comportamientos contrastantes de compresibilidad, en particular Grover y la transformada cuántica de Fourier, para instancias entre 20 y 25 qubits. Los resultados muestran que la estrategia sin pérdida basada en Blosc logra reducciones significativas de memoria en escenarios favorables, especialmente en Grover, manteniendo coincidencia exacta con la referencia no comprimida y error absoluto máximo nulo en todos los casos evaluados. También evidencian que la eficacia de la compresión depende de la estructura del estado cuántico y del patrón de acceso al vector, por lo que no puede asumirse un beneficio uniforme entre algoritmos. En conjunto, el trabajo demuestra que la compresión sin pérdida es una alternativa viable para ampliar la capacidad práctica de simulación cuando la memoria es la restricción dominante y el estado conserva regularidades aprovechables.