Simuladores de circuito cuántico QSIM y QSIMH. Estos simuladores se usaron para la evaluación comparativa de entropía cruzada en [1].
[1], F. Arute et al, "Supremacía cuántica utilizando un procesador superconductor programable", Nature 574, 505, (2019).
QSIM es un simulador de vector estatal Schrödinger. Calcula todas las 2 N amplitudes del vector de estado, donde n es el número de qubits. Esencialmente, el simulador realiza multiplicaciones de vectores de matriz repetidamente. Una multiplicación de vector matriz corresponde a aplicar una puerta. El tiempo de ejecución total es proporcional a G2 N , donde G es el número de puertas de 2 quits. Para acelerar el simulador, usamos la fusión de la puerta [2] [3], aritmética de precisión única, instrucciones AVX/FMA para la vectorización y OpenMP para múltiples subprocesos.
[2] M. Smelyanskiy, NP Sawaya, A. Aspuru-Guzik, "Qhipster: el entorno de prueba de software de alto rendimiento cuántico", ARXIV: 1601.07195 (2016).
[3] T. Häner, DS Steiger, "0.5 Simulación de petabytes de un circuito cuántico de 45 qubits", ARXIV: 1704.01127 (2017).
QSIMH es un simulador híbrido de Schrödinger-Feynman [4]. La red se divide en dos partes y la descomposición de Schmidt se usa para descomponer las puertas de 2 quits en el corte. Si el rango Schmidt de cada puerta es M y el número de puertas en el corte es K, entonces hay rutas m k . Para simular un circuito con Fidelity One, uno necesita simular todas las rutas M K y sumar los resultados. El tiempo de ejecución total es proporcional a (2 N 1 + 2 N 2 ) M K , donde n 1 y N 2 son los números de qubit en la primera y segunda parte. Las simulaciones de ruta son independientes entre sí y pueden ser paralelizadas trivialmente para ejecutarse en supercomputadoras o en centros de datos. Tenga en cuenta que uno puede ejecutar simulaciones con fidelidad f <1 simplemente sumando sobre una fracción F de todas las rutas.
Se utiliza un esquema de punto de control de dos niveles para mejorar el rendimiento. Digamos, hay K puertas en el corte. Las dividimos en tres partes: P+R+S = K , donde P es el número de puertas de "prefijo", r es el número de puertas "raíz" y S es el número de puertas de "sufijo". El primer punto de control se ejecuta después de aplicar todas las puertas hasta las puertas de prefijo y el segundo punto de control se ejecuta después de aplicar todas las puertas hasta las puertas de la raíz. Se realiza la suma completa sobre todas las rutas para las puertas de raíz y sufijo.
Si P> 0 , una de esas simulaciones le da f ≈ m -p (para todas las puertas de prefijo que tienen el mismo rango Schmidt M ). Uno necesita ejecutar simulaciones M P con diferentes rutas de prefijo y sumar los resultados para obtener F = 1 .
[4] Il Markov, A. fatima, SV Isakov, S. Boixo, "La supremacía cuántica está más cerca y más lejos de lo que parece", ARXIV: 1807.10749 (2018).
El código está básicamente diseñado como una biblioteca. El usuario puede modificar las aplicaciones de muestra en las aplicaciones para satisfacer sus propias necesidades. El uso de aplicaciones de muestra se describe en los documentos.
El formato de entrada del circuito se describe en los documentos.
Nota: Este formato está en desuso y ya no se mantiene activamente.
Se proporcionan varios circuitos de muestra en circuitos.
Las pruebas unitarias para las bibliotecas C ++ utilizan el marco de prueba de Google y se encuentran en las pruebas. Las pruebas de Python usan Pytest y se encuentran en QSIMCIRQ_TESTS.
Para construir y ejecutar todas las pruebas, ejecute:
make run-tests
Esto compilará todos los binarios de prueba en archivos con extensiones .x y ejecutará cada prueba en serie. Las pruebas se detendrán temprano si falla una prueba. También ejecutará pruebas de la interfaz qsimcirq Python. Para ejecutar solo las pruebas de C ++ o Python, ejecute make run-cxx-tests o make run-py-tests , respectivamente.
Para limpiar los archivos de prueba generados, ejecute make clean desde el directorio de prueba.
CIRQ es un marco para modelar e invocar circuitos cuánticos de escala intermedia (NISQ) ruidosos.
Para comenzar a simular los circuitos de Google CIRQ con QSIM, consulte el tutorial.
Se puede encontrar información más detallada sobre la API QSIM-CIRQ en los documentos.
Este no es un producto de Google compatible oficialmente.
QSIM se sube a Zenodo automáticamente. Haga clic en esta insignia para ver todos los formatos de cita para todas las versiones.
Una referencia de formato de Bibtex equivalente está a continuación para todas las versiones:
@software{quantum_ai_team_and_collaborators_2020_4023103,
author = {Quantum AI team and collaborators},
title = {qsim},
month = Sep,
year = 2020,
publisher = {Zenodo},
doi = {10.5281/zenodo.4023103},
url = {https://doi.org/10.5281/zenodo.4023103}
}