Quantenschaltungssimulatoren QSIM und QSIMH. Diese Simulatoren wurden zum Cross -Entropie -Benchmarking in [1] verwendet.
[1], F. Arute et al., "Quantenvorherrschaft unter Verwendung eines programmierbaren supraleitenden Prozessors", Nature 574, 505, (2019).
QSIM ist ein Simulator des Schrödinger vollständigen Staatsvektor-Simulators. Es berechnet alle 2 N -Amplituden des Zustandsvektors, wobei n die Anzahl der Qubits ist. Im Wesentlichen führt der Simulator wiederholt Matrix-Vektor-Multiplikationen durch. Eine Matrix-Vektor-Multiplikation entspricht der Anwendung eines Gate. Die Gesamtlaufzeit ist proportional zu G2 N , wobei G die Anzahl von 2-Qubit-Toren ist. Um den Simulator zu beschleunigen, verwenden wir Gate Fusion [2] [3], ein Präzisionsarithmetik, AVX/FMA-Anweisungen zur Vektorisierung und OpenMP für Multi-Threading.
[2] M. Smelyanskiy, NP Sawwaya, A. Aspuru-Guzik, "Qhipster: Die Quanten-Hochleistungs-Software-Testumgebung", ARXIV: 1601.07195 (2016).
[3] T. Häner, DS Steiger, "0,5 Petabyte-Simulation eines 45-Qubit-Quantenkreislaufs", Arxiv: 1704.01127 (2017).
QSIMH ist ein Hybrid-Schrödinger-Feynman-Simulator [4]. Das Gitter wird in zwei Teile aufgeteilt und die Schmidt-Zerlegung wird verwendet, um 2-Qubit-Tore am Schnitt zu zersetzen. Wenn der Schmidt -Rang jedes Tores m ist und die Anzahl der Tore auf dem Schnitt k ist, gibt es M -Kee . Um eine Schaltung mit Treue eins zu simulieren, muss man alle MK -Pfade simulieren und die Ergebnisse zusammenfassen. Die Gesamtlaufzeit ist proportional zu (2 n 1 + 2 n 2 ) m k , wobei N 1 und N 2 die Qubit -Zahlen in der ersten und zweiten Teile sind. Pfadsimulationen sind unabhängig voneinander und können trivial parallel gestaltet werden, um auf Supercomputern oder in Rechenzentren zu betreiben. Beachten Sie, dass man Simulationen mit Treue F <1 ausführen kann, indem man über einen Bruch für alle Pfade summiert.
Ein zweistufiges Checkpointing -Schema wird verwendet, um die Leistung zu verbessern. Sagen Sie, es gibt K -Tore auf dem Schnitt. Wir teilen diese in drei Teile: P+R+S = K , wobei P die Anzahl der "Präfix" -Tore ist, R die Anzahl der "Root" -Tore und S die Anzahl der "Suffix" -Tore ist. Der erste Kontrollpunkt wird ausgeführt, nachdem alle Tore auf und einschließlich der Präfix -Tore angewendet wurden. Der zweite Kontrollpunkt wird ausgeführt, nachdem alle Tore auf und einschließlich der Stammtore angewendet wurden. Die vollständige Summe über alle Wege für die Wurzel- und Suffix -Gates wird durchgeführt.
Wenn p> 0 dann eine solche Simulation f ≈ m -p angibt (für alle Präfix -Tore mit demselben Schmidt -Rang M ). Man muss M -S -Simulationen mit unterschiedlichen Präfixpfaden ausführen und die Ergebnisse zusammenfassen, um F = 1 zu erhalten.
[4] IL Markov, A. Fatima, SV Isakov, S. Boixo, "Quantenvorherrschaft ist sowohl näher als auch weiter als es erscheint", Arxiv: 1807.10749 (2018).
Der Code ist im Grunde als Bibliothek konzipiert. Der Benutzer kann Beispielanwendungen in Apps ändern, um seine eigenen Anforderungen zu erfüllen. Die Verwendung von Stichprobenanwendungen wird in den Dokumenten beschrieben.
Das Schaltungseingangsformat ist in den Dokumenten beschrieben.
Hinweis: Dieses Format ist veraltet und nicht mehr aktiv aufrechterhalten.
In Schaltkreisen sind eine Reihe von Probenschaltungen bereitgestellt.
Unit -Tests für C ++ - Bibliotheken verwenden das Google -Test -Framework und befinden sich in Tests. Python -Tests verwenden PyTest und befinden sich in qsimcirq_tests.
Um alle Tests zu bauen und auszuführen, rennen Sie:
make run-tests
Dadurch werden alle Testbinärdateien in Dateien mit .x -Erweiterungen kompiliert und jeden Test in Reihe ausgeführt. Tests werden frühzeitig aufhören, wenn ein Test fehlschlägt. Es werden auch Tests der qsimcirq -Python -Schnittstelle durchgeführt. Um nur C ++-oder Python-Tests auszuführen, machen Sie make run-cxx-tests oder make run-py-tests .
Um generierte Testdateien zu bereinigen, make clean .
CIRQ ist ein Framework zum Modellieren und Aufrufen von NISQ -Schaltkreisen mit intermediärer Maßstab.
Um mit QSIM zu beginnen, um Google CIRQ -Schaltungen zu simulieren, siehe Tutorial.
Detailliertere Informationen zur QSIM-Cirq-API finden Sie in den DOCs.
Dies ist kein offiziell unterstütztes Google -Produkt.
QSIM wird automatisch auf Zenodo hochgeladen. Klicken Sie auf dieses Abzeichen, um alle Zitierformate für alle Versionen anzuzeigen.
Eine äquivalente Bibtex -Formatreferenz ist für alle Versionen unten unten:
@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}
}