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.
Der Microsoft Quantum Development Kit (QDK) bietet verschiedene Entwicklungsumgebungen für OpenQASM Programme mit Azure Quantum Integration. In diesem Artikel erfahren Sie, wie Sie Code entwickeln und ausführen OpenQASM in:
- Die Erweiterung QDK in Visual Studio Code (VS Code)
- Das QDK Python-Paket in Jupyter Notebook.
Developer-Tools wie CodeLends, IntelliSense, Code-Vervollständigung und Haltepunkt-Debugging sind nur in der Erweiterung VS Code verfügbar. Weitere Features sind nur im Python-Paket verfügbar. Beispielsweise können Sie Q# und OpenQASM-Aufrufe als Python-Objekte übergeben undOpenQASM-Programme, die Eingaben entgegennehmen, in QIR kompilieren.
Voraussetzungen
Installieren der neuesten Version von VS Code
Um direkt mit OpenQASM Dateien zu arbeiten, installieren Sie die neueste Version der QDK Erweiterung in VS Code.
Um mit OpenQASM in Python und Jupyter Notebook zu arbeiten, installieren Sie die neueste Version der Erweiterung Python und die erweiterung Jupyter in VS Code.
Installieren Sie die neueste Version des
qdkPython-Pakets mit dem Extrajupyter:pip install --upgrade "qdk[jupyter]"
Arbeiten Sie mit OpenQASM in VS Code mit der QDK-Erweiterung
Um OpenQASM-Code in VS Code zu schreiben, öffnen Sie ein Q#-Projekt und erstellen Sie eine OpenQASM-Datei mit der Erweiterung .qasm. Das QDK erkennt die .qasm Datei automatisch als OpenQASM, und die QDK Features sind für OpenQASM verfügbar, während Sie Ihren Code schreiben.
Die folgenden QDK Features sind für OpenQASM Programme verfügbar in VS Code:
- Codevervollständigung
- Code-Lenses (Run, Histogram, Estimate, Debug und Circuit)
- Syntaxmarkierung und grundlegende Syntaxfunktionen, z. B. Klammerabgleich
- Fehlerüberprüfung in OpenQASM Quelldateien
- Breakpoint-Debugging und Skriptausführung für OpenQASM Quelldateien
- Fehlersuche mit live Generieren von Schaltungen
- Integration mit Azure Quantum für die Quantenauftragsübermittlung
Um Ihr OpenQASM-Programm von VS Code zur Ausführung zu bringen, können Sie entweder den lokalen Simulator von QDK verwenden oder den Code als Auftrag an Azure Quantum übermitteln.
Ausführen des Codes im QDK lokalen Simulator
Um Ihren OpenQASM Code im lokalen Sparse-Quantum-Simulator in VS Code auszuführen, öffnen Sie eine .qasm-Datei und wählen Sie dann den Befehl Ausführen aus der CodeLens am Anfang der Datei aus. Die Ausgabe Ihres Programms wird im VS Code-Terminal angezeigt.
Hinweis
Das QDK versucht automatisch, ein QIR-targetProfil festzulegen, das Ihr Programm unterstützt. Wenn das QIR-Profil target Vorgänge in Ihrem Programm nicht unterstützt, erhalten Sie Compilerfehler, wenn Sie Ihren OpenQASM Code ausführen. Weitere Informationen zu target Profilen finden Sie unter Differente Typen von target Profilen in Azure Quantum.
Integrierte Beispielprogramme
Das QDK verfügt über mehrere integrierte Quantenalgorithmusbeispiele für OpenQASM. Um die Beispielalgorithmen auszuprobieren, geben Sie sample in eine leere .qasm Datei ein. Es wird eine Abschlussliste angezeigt, die die Beispielalgorithmen enthält. Wählen Sie ein Beispiel aus, und führen Sie dann den generierten Code aus.
Lokal debuggen in VS Code
Dies QDK umfasst einen Debugger für OpenQASM. Der Debugger unterstützt das Debuggen im Haltepunktstil und kann den Programmzustand rendern.
Um den Debugger zu starten, wählen Sie den Befehl "Debuggen " aus der Codelinse aus.
Im Debugmodus können Sie Haltepunkte in Ihrem Code festlegen, um Sie beim Debuggen zu unterstützen. Der Status Des Programms wird im Bereich "AUSFÜHREN UND DEBUGGEN " angezeigt. Sie können z. B. ihre lokalen Variablenzustände und Qubitzustände anzeigen.
Führen Sie Ihren Code auf Azure Quantum aus
Zum Ausführen von OpenQASM Programmen auf Azure Quantumtargets müssen Sie über einen Azure Quantum Arbeitsbereich verfügen. Informationen zum Erstellen eines Azure Quantum Arbeitsbereichs finden Sie unter Erstellen eines Azure Quantum Arbeitsbereichs.
Um OpenQASM Aufträge von Azure Quantum an VS Code zu senden, müssen Sie sich mit Ihrem Azure Quantum-Arbeitsbereich verbinden. Informationen zum Herstellen einer Verbindung mit Ihrem Arbeitsbereich über VS Code finden Sie unter Herstellen einer Verbindung mit einer Verbindungszeichenfolge.
Um einen OpenQASM Auftrag von Azure Quantum an VS Code zu übermitteln, führen Sie die folgenden Schritte aus:
- Öffnen Sie die
qasm-Datei, die Ihr Programm in VS Code enthält. - Wählen Sie das Microsoft Quantum-Symbol aus, um das Microsoft Quantum-Panel zu öffnen.
- Erweitern Sie das Dropdown-Menü QUANTUM WORKSPACES und wählen Sie Ihren Arbeitsbereich aus.
- Öffnen Sie die Dropdownliste Anbieter und wählen Sie einen Anbieter aus. Wählen Sie dann die target, auf der Sie Ihren Job ausführen möchten. Übermitteln Sie z. B. Ihren Auftrag an den
rigetti.svm.simtarget Back-End-Simulator von Rigetti, um Ihr Programm auszuführen. Weitere Informationen zu Anbieter und target Verfügbarkeit finden Sie unter Hinzufügen oder Entfernen eines Anbieters in einem vorhandenen Arbeitsbereich. - Wählen Sie das Wiedergabesymbol neben dem target Namen aus.
- Um den Auftrag zu übermitteln, geben Sie Werte für die Aufforderung " Auftragsname " und die Aufforderung "Anzahl der Aufnahmen" ein.
Um die Zeiten und den Status eines Auftrags anzuzeigen, erweitern Sie die Dropdownliste "Aufträge ", und zeigen Sie auf den Namen des Auftrags. Um die Auftragsergebnisse herunterzuladen, wählen Sie das Histogramm oder textsymbole neben dem Auftragsnamen aus.
Arbeiten mit OpenQASM in Python und Jupyter Notebook
Mit dem QDK Python-Paket können Sie Code direkt ausführen OpenQASM und Schaltkreise als Vorgänge an Q#-Programme übergebenOpenQASM. Schreiben Sie Ihren OpenQASM Code als Python Zeichenfolge, und verwenden Sie dann diese Zeichenfolge, um den code OpenQASM in der Python Umgebung auszuführen, zu importieren oder zu kompilieren.
Führen Sie OpenQASM direkt in Python
Um OpenQASM Code direkt auszuführen, verwenden Sie die run Funktion aus dem qdk.openqasm Modul. Zum Beispiel: Der folgende Code führt 10 Durchläufe auf dem lokalen Simulator eines einfachen OpenQASM-Programms mit Rauschen aus.
from qdk import BitFlipNoise
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
results = run(qasm_code, shots=10, noise=BitFlipNoise(0.1))
print(results)
Aufrufen eines OpenQASM Programms in Q#
Sie können die Funktion import_openqasm verwenden, um ein OpenQASM-Programm als Python-Objekt zu speichern und dieses Objekt später im Python Code aufzurufen. In der folgenden Zelle wird beispielsweise ein OpenQASM-Schaltkreis in einem Python-Objekt gespeichert, das bell heißt:
from qdk import qsharp
from qdk.openqasm import import_openqasm
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
import_openqasm(qasm_code, name="bell")
Wenn bell Teil Ihrer Umgebung ist, können Sie es direkt aus einer Q#-Zelle ausführen.
%%qsharp
use qs = Qubit[2];
bell(qs)
Sie können die QDK Paketfunktionalität auch mit bell verwenden, z. B. für störanfällige Simulationen, Schaltkreisvisualisierung und Codegenerierung.
Parametrisierte OpenQASM Programme
In der folgenden Zelle wird ein OpenQASM-Schaltkreis erstellt, der einen Winkel theta als Eingabe verwendet und dann den Schaltkreis als Python Funktion aufruft:
from qdk.openqasm import import_openqasm, ProgramType
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
parameterized_circuit(1.57)
Übergeben eines OpenQASM Programms an Q#
Mit dem QDK Python-Paket können Sie ein OpenQASM Programm direkt an ein Q#-Programm übergeben. Mit dem folgenden Code wird beispielsweise ein OpenQASM Programm mit dem Namen Entangle erstellt und dann als Operation Entangle in einem Q#-Programm verwendet.
from qdk.openqasm import import_openqasm
from qdk import qsharp
qasm_code = """
include "stdgates.inc";
qubit[2] qs;
h qs[0];
cx qs[0], qs[1];
"""
import_openqasm(qasm_code, name="Entangle")
qsharp.eval("{ use qs = Qubit[2]; Entangle(qs); MResetEachZ(qs) }")
Wenn Sie Q# importieren und OpenQASM Programme in einer Python Umgebung mit qsharp.eval und import_openqasm importieren, werden diese Programme zu Python Objekten, die Sie in Ihrem Python Code aufrufen können. Der folgende Code erstellt z. B. ein Q#-Programm namens TestAntiCorrelation und übergibt das EntangleOpenQASM Programm an TestAntiCorrelation:
qsharp.eval("""
operation TestAntiCorrelation(entangler : Qubit[] => Unit) : Result[] {
use qs = Qubit[2];
X(qs[1]);
entangler(qs);
MResetEachZ(qs)
}
""")
from qdk.code import Entangle, TestAntiCorrelation
TestAntiCorrelation(Entangle)
Kompilieren von OpenQASM Programmen in QIR
Mit der Funktion OpenQASM können Sie compile Code in Quantum Intermediate Representation (QIR) kompilieren.
Zum Beispiel kompiliert die folgende Zelle OpenQASM Code für einen parametrisierten Schaltkreis in QIR.
from qdk import TargetProfile
from qdk.openqasm import import_openqasm, ProgramType
from qdk import qsharp
qsharp.init(target_profile=TargetProfile.Base)
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
bound_compilation = qsharp.compile(parameterized_circuit, 1.57)
print(bound_compilation)
Hinweis
Um Programme zu kompilierenOpenQASM, die Eingabevariablen in QIR aufnehmen, müssen Sie das QDK Python-Paket verwenden. Sie können parametrisierte OpenQASM Programme nicht mithilfe der QDK Erweiterung in VS CodeQIR kompilieren.
Übermitteln von OpenQASM Programmen an Azure Quantum
Um ein OpenQASM-Programm zur Ausführung auf einem Azure Quantumtarget einzureichen, kompilieren Sie den OpenQASM-Code in QIR und reichen Sie dann das QIR zur Ausführung auf Azure Quantum ein.
Kompilieren Sie beispielsweise einen einfachen Verschränkungsschaltkreis in QIR.
from qdk.openqasm import compile
qasm_code = """
include "stdgates.inc";
bit[2] c;
qubit[2] q;
h q[0];
cx q[0], q[1];
c = measure q;
"""
qir_compilation = compile(qasm_code)
Um einen QIR-Auftrag auf Azure Quantum auszuführen, verbinden Sie sich mit Ihrem Quantenarbeitsbereich und übermitteln Sie den Auftrag an einen der verfügbaren targets in Ihrem Workspace. Übermitteln Sie z. B. das Veranglement QIR, um auf dem IonQ-Back-End-Simulator ausgeführt zu werden.
from qdk.azure import Workspace
workspace = Workspace(resource_id="") # Add the resource ID of your workspace
target = workspace.get_targets('ionq.simulator')
job = target.submit(qir_compilation, shots=100)
print("Job submitted. Waiting for results...")
results = job.get_results()
print(results)
Laufende OpenQASM Entwicklung im QDK
Die Unterstützung für OpenQASM in der QDK läuft weiterhin.
Eine Liste der Funktionen OpenQASM, die im QDK entwickelt werden, finden Sie unter Bekannte Einschränkungen und Probleme im QDK GitHub-Repository-Wiki.