Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das MicrosoftQuantum Development Kit (QDK) Python Paket enthält lokale Quantensimulatoren, mit denen Sie Quantenprogramme testen und entwickeln können. In diesem Artikel wird erläutert, wie die Simulatoren installiert werden und Q#-, OpenQASM-, Qiskit- und QIR-Programme in Python oder Jupyter Notebook ausgeführt werden.
Das QDKPython Paket enthält vier primäre Simulatoren:
- Sparse-Simulator
- Stabilisator-Simulator
- GPU Simulator
- CPU Simulator
Weitere Informationen zu den QDK Quantensimulatoren finden Sie in der QDKÜbersicht über Quantensimulatoren.
Informationen zum direkten Ausführen von QDK- oder QDK-Programmen in der -Erweiterung für Visual Studio Code (VS Code) finden Sie unter Q#.
Voraussetzungen
Um den Jupyter Notebook Beispielen in diesem Artikel zu folgen, installieren Sie die folgenden Tools:
- Eine Python Umgebung mit Python 3.10 oder höher und Pip
- Die neueste Version von Visual Studio Code (VS Code)
- Die neuesten Versionen der Python Erweiterung und Jupyter-Erweiterung in VS Code
Installieren der Simulatoren
Um die Quantensimulatoren in Python und Jupyter Notebook zu verwenden, installieren Sie die neueste Version des qdkPython Pakets mit dem Extra jupyter:
pip install --upgrade "qdk[jupyter]"
Die Simulatoren benötigen das jupyter Extra nicht, aber das Extra fügt das qdk.widgets Modul hinzu, um Simulationsergebnisse in Jupyter Notebook zu visualisieren.
Wählen Sie einen Simulator basierend auf dem quantenprogrammierungsframework und der Python verwendeten API aus.
Rufen Sie den Sparse-Simulator auf
Der sparse Simulator unterstützt Q#, OpenQASMund Qiskit Programme. In dieser Tabelle wird gezeigt, wie 10 Durchläufe mit dem qdk Paket in den einzelnen Frameworks ausgeführt werden.
| Programmier-Framework | Python-API | Beispielanruf |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, shots=10) |
| Qiskit | qiskit.QSharpBackend |
QSharpBackend().run(my_qiskit_program, shots=10) |
Note
Der sparse Simulator unterstützt Rauschmodelle über den noise Parameter für Q# und OpenQASM Programme, aber nicht für Qiskit Programme.
Führen Sie beispielsweise die folgenden Schritte aus, um das Bell-Paarprogramm Q# in einem Jupyter-Notizbuch in VS Code auszuführen:
Wählen Sie in VS Code Ansicht> aus.
Geben Sie Erstellen: Neues Jupyter-Notizbuch ein. Eine leere Notizbuchdatei wird auf einer neuen Registerkarte geöffnet.
Importieren Sie in der ersten Zelle das
qsharpModul aus demqdkPaket.from qdk import qsharpVerwenden Sie in einer neuen Zelle den
%%qsharpmagischen Befehl, um den Q# Code zu schreiben.%%qsharp operation Main() : (Result, Result) { use (q1, q2) = (Qubit(), Qubit()); PrepareBellPair(q1, q2); (MResetZ(q1), MResetZ(q2)) } operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit { H(q1); CNOT(q1, q2); }Erstellen einer neuen Zelle. Um das Q# Programm auf dem sparse Simulator auszuführen, rufen Sie die
runFunktion aus demqsharpModul auf, und geben Sie die Anzahl der Aufnahmen an.qsharp.run("Main()", shots=10)
Rufen Sie den Stabilisierungssimulator auf
Der Stabilisator-Simulator führt breite, Clifford-dominierte Schaltkreise effizient aus. Stabilisierungsverzweigung unterstützt auch eine begrenzte Anzahl von nicht-Clifford-Operationen, z. B. $T$- und $T^\dagger$-Tore sowie Drehungen mit beliebigen Winkeln Pauli. Da die Anzahl der Verzweigungen exponentiell mit der Anzahl der nicht-Clifford-Operationen wachsen kann, verwenden Sie einen Vollzustandssimulator für Schaltkreise mit erheblicher nicht-Clifford-Evolution.
Der Stabilisierungssimulator unterstützt Q#, OpenQASM, Qiskit und QIR Programme. In dieser Tabelle wird gezeigt, wie 10 Durchläufe in jedem Framework ausgeführt werden.
| Programmier-Framework | Python-API | Beispielanruf |
|---|---|---|
| Q# | qsharp.run |
qsharp.run("MyQsharpProgram()", type="stabilizer", shots=10) |
| OpenQASM | openqasm.run |
openqasm.run(my_qasm_program, type="stabilizer", shots=10) |
| Qiskit | qiskit.NeutralAtomBackend |
NeutralAtomBackend().run(my_qiskit_program, simulator_type="stabilizer", shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type="stabilizer", shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type="stabilizer", shots=10) |
Die APIs
NeutralAtomDeviceundNeutralAtomBackendsind speziell für Simulationen auf Quantencomputern mit neutralen Atomen gedacht. Weitere Informationen finden Sie unter Übersicht über den Neutralatom-Gerätesimulator.
Beispielsweise führt dieser Python Code ein OpenQASM Programm mit einem Nicht-Clifford $T$-Gate auf dem Stabilisator-Simulator aus:
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[1] q;
bit[1] result;
h q[0];
t q[0];
h q[0];
result = measure q;
"""
run(qasm_code, type="stabilizer", shots=1000)
Note
Sowohl "clifford" als auch "stabilizer" wählen den Stabilisierungssimulator aus. Die API bestimmt, ob der Parameter type oder simulator_type ist.
Das $T$-Gatter erzeugt Stabilisatorzweige. Die abschließende Messung misst die Interferenzen zwischen jenen Zweigen.
Rufen Sie die GPU- und CPU-Simulatoren auf
Die GPU Und CPU Simulatoren unterstützen Qiskit und QIR programme. In dieser Tabelle wird gezeigt, wie 10 Shots im GPU Simulator mit dem qdk Paket in den einzelnen Frameworks ausgeführt werden. Um den CPU Simulator zu verwenden, ersetzen Sie gpu durch cpu im Simulatortypparameter.
| Programmier-Framework | Python-API | Beispielanruf |
|---|---|---|
| Qiskit | qiskit.NeutralAtomBackend |
NeutralAtomBackend().run(my_qiskit_program, simulator_type="gpu", shots=10) |
| QIR | simulation.NeutralAtomDevice |
simulation.NeutralAtomDevice().simulate(my_qir, type="gpu", shots=10) |
| QIR | simulation.run_qir |
simulation.run_qir(my_qir, type="gpu", shots=10) |
Mit diesem Python Code wird beispielsweise ein einfaches OpenQASM Programm in QIR konvertiert und das GPU auf dem QIR-Simulator ausgeführt:
from qdk.openqasm import compile
from qdk.simulation import run_qir
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
qir = compile(qasm_code)
run_qir(qir, type="gpu", shots=10)