Übersicht über Quantensimulatoren im QDK

Die MicrosoftQuantum Development Kit (QDK) enthält eine Reihe von Quantensimulatoren, mit denen Sie Quantenprogramme auf Ihrem lokalen Computer ausführen können. Verwenden Sie die lokalen Simulatoren, um iterativ an Ihren Programmen zu arbeiten, bevor Sie diese zur Ausführung auf Azure Quantum-Zielen einreichen.

Das QDK hat vier Simulatoren:

  • Der sparse Simulator
  • Der Clifford Simulator
  • Der GPU Simulator
  • Der CPU Simulator

Der sparse Simulator

Der Sparse-Simulator ist der Standardsimulator im QDK. Dieser Simulator stellt Qubit-Zustände als dünnbesetzte Vektoren dar, um die dünnbesetzte Matrixalgebra für schnelle Simulationen zu nutzen, vor allem für Programme, die nicht viele Superpositionszustände generieren. Verwenden Sie den sparsamen Simulator, wenn Sie schnelle Simulationen von Q#, OpenQASModer Qiskit Programmen oder wenn Sie den Quantenzustand Ihres Programms während der Simulation anzeigen möchten.

Der Sparse-Simulator ist sowohl in der QDK-Erweiterung für Visual Studio Code (VS Code) als auch in der QDKPython-Bibliothek verfügbar. Dieser Simulator ist der einzige verfügbare Simulator in der QDK Erweiterung, sodass der Compiler automatisch den Sparse-Simulator aufruft, wenn Sie Q# und OpenQASM Programme in VS Code ausführen. Mit dem sparsamen Simulator in VS Code können Sie die Q#DumpMachine Funktion oder den Debugger verwenden, um Qubit-Zustandsvektoren an verschiedenen Punkten in der Simulation anzuzeigen.

Sowohl die VS Code-Erweiterung als auch die Python-Bibliothek unterstützen Rauschmodelle für sparsame Simulationen von Q# und OpenQASM-Programmen. Nur die Python-Bibliothek unterstützt Sparse-Simulationen für Qiskit-Programme, jedoch ohne Unterstützung von Rauschmodellen.

Weitere Informationen zum Sparsesimulator finden Sie im Sparsesimulator.

Der Clifford Simulator

Der Clifford Simulator ist schnell und effizient für Programme mit bis zu Tausenden von Qubits, kann aber nur Programme simulieren, die nur Clifford Tore enthalten. Clifford Tore sind häufige Komponenten von Fehlerkorrekturschaltungen. Die Gruppe von Clifford Toren besteht aus den Toren H, S und CX und allen Toren, die von diesen drei Toren gebaut werden können. Die folgenden Clifford Tore sind gemeinsame Komponenten von Quantenschaltungen:

  • $X$, $Y$ und $Z$
  • $S$ und $S^\dagger$
  • $H$ oder Hadamard
  • $CX$, $CY$ und $CZ$
  • SWAP und iSWAP

Der Clifford Simulator ist in der QDKPython-Bibliothek für Q#, OpenQASM, Qiskit und QIR Programme verfügbar, ist aber in der Erweiterung QDK für VS Code nicht verfügbar.

Der GPU Simulator

Der GPU-Simulator ist ein Simulator für den vollständigen Zustand, der die GPU ihres Computers verwendet, um zahlreiche Durchläufe Ihres Quantenprogramms parallel auszuführen. Dieser Simulator kann Programme ausführen, die eine beliebige Art von Gate enthalten, aber der Betrieb ist teuer. Der Simulator kann bis zu 27 Qubits modellieren. Die Leistung der GPU ihres Computers bestimmt die Leistung, aber die Leistung ist optimal für Programme mit rund 20 Qubits und vielen Ausführungen.

Der GPU Simulator verwendet QIR oder Qiskit als Eingabe und ist über bestimmte QDKPython-Bibliotheks-APIs, aber nicht über die VS Code-Erweiterung verfügbar. Umfangreiche Unterstützung von Rauschmodellen für jede Art von Quantengatter oder Vorgang ist ebenfalls verfügbar.

Der CPU Simulator

Wie der GPU-Simulator ist auch der CPU-Simulator ein Simulator für vollständige Zustände, der Programme mit jeglicher Art von Quantengatter ausführen kann. Der CPU Simulator ist jedoch langsamer, da er nicht mehrere Aufnahmen parallel ausführen kann. Dieser Simulator skaliert auf bis zu 25 Qubits, verlangsamt sich jedoch exponentiell bei mehr Qubits aufgrund von Speicherproblemen. Verwenden Sie den CPU Simulator, wenn Ihr Computer nicht über ein GPU verfügt oder wenn Ihr Programm nur wenige Qubits hat und Sie nicht viele Schüsse ausführen.

Der CPU Simulator verwendet QIR oder Qiskit als Eingabe und ist über bestimmte QDKPython-Bibliotheks-APIs, aber nicht über die VS Code-Erweiterung verfügbar. Umfangreiche Unterstützung von Rauschmodellen für jede Art von Quantengatter oder Vorgang ist ebenfalls verfügbar.

Welchen Simulator sollte ich verwenden?

Der am besten zu verwendende Simulator hängt von mehreren Faktoren ab, z. B.:

  • Ihre Entwicklungsumgebung (VS Code oder Python)
  • Das Quantenprogrammierungsframework, in dem Sie entwickeln
  • Die Komplexität Ihres Programms und die Anzahl der Aufnahmen
  • Die Hardwarefunktionen Ihres lokalen Computers
  • Die Azure Quantum-Ziele oder andere Quantenhardware, auf der Sie Ihre Programme ausführen möchten
  • Die Rauschmodelle, die Sie erstellen möchten

In der folgenden Tabelle sind die QDK Optionen und Quantenprogrammierframeworks zusammengefasst, die Sie für jeden Simulator verwenden können:

Simulator Verfügbarkeit Unterstützte Frameworks
Spärlich VS Code-Erweiterung und Python-Bibliothek Q#, OpenQASMQiskit
Clifford Python-Bibliothek Q#, OpenQASM, Qiskit, QIR
GPU Python-Bibliothek Qiskit, QIR
CPU Python-Bibliothek Qiskit, QIR

Simulationen in der QDK Erweiterung für VS Code

Der sparse Simulator ist der einzige verfügbare Simulator in der QDK Erweiterung für VS Code. Um den Sparsesimulator zu verwenden, führen Sie Ihre Q#- oder OpenQASM-Datei in VS Code aus. Sie können dem Sparse-Simulator für Q#-Programme in VS Code eingeschränkte Rauschmodelle hinzufügen, nicht jedoch für OpenQASM-Programme.

Simulationen in der Bibliothek QDKPython

Die QDKPython Entwicklungsumgebung unterstützt mehrere Quantenframeworks und alle vier QDK Simulatoren, aber nicht alle Simulatoren sind mit allen Frameworks und APIs kompatibel.

Diese Tabelle zeigt die Simulatoren, die Sie für jede Python API verwenden können, die einen QDK Simulator aufruft, und das Programmierframework, das jede API unterstützt:

Python-API Spärlich Clifford GPU CPU Programmier-Framework
qsharp.run Q#
openqasm.run OpenQASM
qiskit.QSharpBackend Qiskit
simulation.NeutralAtomDevice QIR
simulation.NeutralAtomBackend Qiskit
simulation.run_qir QIR