Simulateurs de circuit quantique QSIM et QSIMH. Ces simulateurs ont été utilisés pour l'entropie croisée d'analyse comparative dans [1].
[1], F. Arute et al, "La suprématie quantique utilisant un processeur supraconducteur programmable", Nature 574, 505, (2019).
QSIM est un simulateur de vecteur d'État complet Schrödinger. Il calcule toutes les 2 n amplitudes du vecteur d'état, où n est le nombre de qubits. Essentiellement, le simulateur effectue des multiplications de vecteur matriciel à plusieurs reprises. Une multiplication matricielle-vectorielle correspond à l'application d'une porte. Le temps d'exécution total est proportionnel à G2 N , où G est le nombre de portes de 2 points. Pour accélérer le simulateur, nous utilisons la fusion de porte [2] [3], les instructions Arithmétique, AVX / FMA de précision unique pour la vectorisation et l'OpenMP pour le multi-threading.
[2] M. Smelyanskiy, NP Sawaya, A. Aspuru-Guzik, "Qhipster: The Quantum High Performance Software Testing Environment", Arxiv: 1601.07195 (2016).
[3] T. Häner, DS Steiger, "0,5 Petabyte Simulation d'un circuit quantique de 45 qubit", Arxiv: 1704.01127 (2017).
QSIMH est un simulateur hybride Schrödinger-Feynman [4]. Le réseau est divisé en deux parties et la décomposition de Schmidt est utilisée pour décomposer les portes de 2 points sur la coupe. Si le rang Schmidt de chaque porte est m et le nombre de portes sur la coupe est k , il y a des chemins m k . Pour simuler un circuit avec Fidelity One, il faut simuler tous les chemins M K et résumer les résultats. Le temps d'exécution total est proportionnel à (2 n 1 + 2 n 2 ) m k , où n 1 et n 2 sont les nombres de qubit dans les première et deuxième parties. Les simulations de chemin sont indépendantes les unes des autres et peuvent être trivialement parallélisées pour s'exécuter sur des supercalculateurs ou dans des centres de données. Notez que l'on peut exécuter des simulations avec la fidélité F <1 simplement en résumant sur une fraction F de tous les chemins.
Un schéma de pointage de contrôle à deux niveaux est utilisé pour améliorer les performances. Disons, il y a K Gates sur la coupe. Nous les divisons en trois parties: P + R + S = K , où P est le nombre de portes "Préfixe", R est le nombre de portes "racine" et S est le nombre de portes "suffixes". Le premier point de contrôle est exécuté après avoir appliqué toutes les portes jusqu'à et y compris les portes du préfixe et le deuxième point de contrôle est exécuté après avoir appliqué toutes les portes jusqu'à et y compris les portes racinaires. La sommation complète sur tous les chemins pour les portes racine et suffixe est effectuée.
Si p> 0 , une telle simulation donne f ≈ m -p (pour toutes les portes de préfixe ayant le même rang schmidt m ). Il faut exécuter des simulations M P avec différents chemins de préfixe et résumer les résultats pour obtenir F = 1 .
[4] Il Markov, A. Fatima, Sv Isakov, S. Boixo, "La suprématie quantique est à la fois plus proche et plus loin qu'il n'y paraît", Arxiv: 1807.10749 (2018).
Le code est essentiellement conçu comme une bibliothèque. L'utilisateur peut modifier des exemples d'applications dans les applications pour répondre à ses propres besoins. L'utilisation des applications d'échantillons est décrite dans les documents.
Le format d'entrée de circuit est décrit dans les documents.
Remarque: Ce format est obsolète et n'est plus activement maintenu.
Un certain nombre de circuits d'échantillonnage sont fournis dans des circuits.
Les tests unitaires pour les bibliothèques C ++ utilisent le framework de test Google et sont situés dans les tests. Les tests Python utilisent Pytest et sont situés dans QSimcirq_tests.
Pour construire et exécuter tous les tests, exécutez:
make run-tests
Cela compilera tous les binaires de test sur des fichiers avec des extensions .x et exécutera chaque test en série. Les tests s'arrêteront tôt si un test échoue. Il exécutera également des tests de l'interface qsimcirq Python. Pour exécuter les tests C ++ ou Python uniquement, exécutez make run-cxx-tests ou make run-py-tests , respectivement.
Pour nettoyer les fichiers de test générés, exécutez make clean à partir du répertoire de test.
Le CIRQ est un cadre pour la modélisation et l'invoquer des circuits de quantum à l'échelle intermédiaire bruyante (NISQ).
Pour commencer à simuler les circuits Google Cirq avec QSIM, consultez le tutoriel.
Des informations plus détaillées sur l'API QSIM-CIRQ peuvent être trouvées dans les documents.
Ce n'est pas un produit Google officiellement pris en charge.
QSIM est téléchargé automatiquement sur Zenodo. Cliquez sur ce badge pour voir tous les formats de citation pour toutes les versions.
Une référence de format bibtex équivalent est ci-dessous pour toutes les versions:
@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}
}