OpenQASM tabelle mit 3 Merkmalen
Nachstehend finden Sie eine Liste der Sprachmerkmale von OpenQASM 3 .
Weitere Einzelheiten zu diesen Funktionen finden Sie in der OpenQASM 3.X Live-Spezifikation.
Schlüssel:
- ❌ Nicht unterstützt
- 🟡 Teilweise Unterstützung
- ✅ Unterstützt
Die Bedeutung der vollständigen Markierung "unterstützt" hängt von der jeweiligen Spalte ab:
-
Qiskit SDK : Das Merkmal kann durch
qiskit.qasm3.loads(unter Verwendung derqiskit-qasm3-importErweiterung) analysiert, in einem dargestellt und nach OpenQASMQuantumCircuit3 exportiert werdenqiskit.qasm3.dumps. -
IBM Quantum Compute-Service : Ein Schaltkreis, der das entsprechende Qiskit-Feature enthält, kann über den „ IBM Quantum “-Compute-Service erfolgreich auf der Hardware ausgeführt werden.
Die Bedeutung der "teilweisen Unterstützung" hängt in der Regel von den damit verbundenen Noten ab.
Die gängigste Methode, Schaltkreise beim „ IBM Quantum Compute Service“ einzureichen, besteht darin, den Schaltkreis über die Schnittstelle „ Python -space“ unter Qiskit SDK zu erstellen. Auf diese Weise erstellte und eingereichte Schaltkreise müssen nicht aus den „ OpenQASM 3“-Dateien in „ Qiskit SDK “ geladen werden.
Wenn Sie „ OpenQASM “ 3 nicht direkt selbst nutzen, können Sie die Funktionen, die für die Darstellung in „ Qiskit SDK “ unterstützt werden, problemlos nutzen, in „ OpenQASM “ 3 exportieren und an den „ IBM Quantum Compute Service“ übermitteln. Dazu gehören Funktionen, die von Qiskit SDK nicht aus OpenQASM 3 geladen werden können.
OpenQASM 3 Merkmal | Qiskit SDK-Funktion | Qiskit-SDK | IBM Quantum Rechendienst | Hinweise |
|---|---|---|---|---|
| Kommentare | ✅ | ✅ | 1 | |
| QASM vstring | ✅ | ✅ | 1 | |
include | 🟡 | ❌ | 1, 7 | |
| unicode-Namen | ✅ | ✅ | ||
qubit | Qubit und QuantumRegister | ✅ | 🟡 | 2. |
bit | Clbit und ClassicalRegister | ✅ | ✅ | 3 |
bool | expr.Var und klassische Ausdrücke | 🟡 | ✅ | 4 |
int | ❌ | ✅ | 4 | |
uint | expr.Var und klassische Ausdrücke | 🟡 | ✅ | 4 |
float | expr.Var und klassische Ausdrücke | 🟡 | 🟡 | 4 |
angle | Implizit, als Gate-Parameter | ❌ | 🟡 | 4 |
complex | ❌ | ❌ | 4 | |
const | ❌ | ❌ | 4 | |
pi/π/tau/τ/euler/ℇ | Konstant-gefaltet in Gatterparameter | ✅ | ✅ | |
| Aliasing: lassen | Quanten- und klassische Register | 🟡 | ❌ | 5 |
| registerverkettung | Quanten- und klassische Register | 🟡 | ❌ | 5 |
| explizite Typumwandlung | expr.Cast klassische Ausdrücke | 🟡 | 🟡 | 4 |
duration | ❌ | ❌ | ||
durationof | ❌ | ❌ | ||
ns/µs/us/ms/s/dt | Dauer von delay und box | ✅ | ✅ | 6 |
stretch | expr.Stretch | 🟡 | 🟡 | 4, 6 |
delay | Delay/QuantumCircuit.delay | ✅ | ✅ | 6 |
barrier | Barrier/QuantumCircuit.barrier | ✅ | ✅ | |
box | BoxOp/QuantumCircuit.box | ✅ | ❌ | 6 |
Integriert U | UGate/QuantumCircuit.u | ✅ | ✅ | |
gate | 🟡 | 🟡 | 7 | |
gphase | QuantumCircuit.global_phase | 🟡 | ❌ | 7 |
ctrl @/ negctrl @ | AnnotatedOperation | 🟡 | ❌ | 7 |
inv @ | AnnotatedOperation | 🟡 | ❌ | 7 |
pow(k) @ | AnnotatedOperation | 🟡 | ❌ | 7 |
reset | Reset/QuantumCircuit.reset | ✅ | ✅ | |
measure | Measure/QuantumCircuit.measure | ✅ | ✅ | |
| bitoperationen | 🟡 | ✅ | 4 | |
| Boolesche Operationen | 🟡 | ✅ | 4 | |
| Arithmetische Ausdrücke | 🟡 | 🟡 | 4 | |
| Vergleiche | 🟡 | ✅ | 4 | |
if | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else | QuantumCircuit.if_test | ✅ | ✅ | 8 |
else if | QuantumCircuit.if_test | ✅ | ❌ | 8 |
for Schleifen | QuantumCircuit.for_loop | 🟡 | ❌ | 8 |
while Schleifen | QuantumCircuit.while_loop | ✅ | ❌ | 8 |
continue | QuantumCircuit.continue_loop | 🟡 | ❌ | 8 |
break | QuantumCircuit.break_loop | 🟡 | ❌ | 8 |
return | ❌ | ❌ | ||
extern | ❌ | ❌ | ||
def unterroutinen (klassisch) | ❌ | ❌ | ||
def unterroutinen (Quantum) | ❌ | ❌ | ||
input | QuantumCircuit.add_input | ✅ | 🟡 | 4, 9 |
output | ❌ | ❌ |
Hinweise
- Diese OpenQASM 3 Programmeigenschaften haben keinen Einfluss auf die Ausführung und Qiskit entfernt sie sie als Teil des Parsens der Dateien heraus. Dateien, die sie verwenden, können eingereicht werden, aber sie haben keine Wirkung. Für
includeDateien wird derzeitstdgates.incals Eingabe für Qiskit unterstützt, und die Backend-Ausführung setzt immer voraus, dass die Schaltkreise mit der Backend-Instruktionssatzarchitektur (ISA) kompiliert wurden, wobeiincludedateien irrelevant sind.
- Qiskit SDK unterstützt das Parsen und Dumpen von OpenQASM 3 Dateien mit beliebigen
qubitDeklarationen. Für für die Ausführung auf Hardware sind nur Schaltungen gültig, die in Form von Hardware-Qubits definiert sind (z. B.$0). Qiskit SDK gibt automatisch OpenQASM 3 in Form der unterstützten Hardware-Qubit identifikatoren aus, wenn die Schaltung für ein Backend mit Layout-Informationen transpiliert wurde.
bit- undbit[n]-typisierten Variablendeklarationen in Qiskit SDK entsprechenClbitundClassicalRegisterdeklarationen.
- Ab Juli 2025 kann Qiskit SDK lokale Variablen einer begrenzten Anzahl von Typen darstellen, kann viele Laufzeitoperationen auf diesen Objekten darstellen und unterstützt deren Ausgabe auf OpenQASM 3.
Das Qiskit SDK (über
qiskit-qasm3-importv0.6.0 ) unterstützt jedoch nicht das Parsen von OpenQASM 3 dateien, die Variablendeklarationen enthalten, und bietet nur sehr begrenzte Unterstützung für das Parsen von Variablen ausdrücke. Im Allgemeinen kann das meiste, was Qiskit in seinem Ausdruckssystem darstellen kann, auf auf geeigneter dynamischer Hardware ausgeführt werden, auch wenn der Ausdruck noch nicht von Qiskit SDK geparst werden kann Qiskit SDK. Siehe die Qiskit-Dokumentation desqiskit.circuit.classicalmoduls finden Sie die aktuellsten Informationen.
- Qiskit SDK kann Register-Aliasing sowohl für Quanten- als auch für klassische Register darstellen, aber es wird es wird jedoch dringend davon abgeraten, Aliasing von klassischen Registern zu verwenden. Die meisten Ausdrücke für klassische register funktionieren nicht mit Aliasen, und klassische Register mit Aliasen werden nicht unterstützt für ausführung auf Hardware nicht unterstützt. Der Qiskit OpenQASM 3 Parser kann
letAlias-Anweisungen auflösen, die das das Ergebnis der Registerkonkantenbildung.
- Qiskit SDK unterstützt explizite Verzögerungen über
QuantumCircuit.delay, und Schaltkreise (QuantumCircuit.box) können auch explizite Dauern haben. Diese Dauern können die klassischen ausdrücke vonstretchVariablen enthalten. Qiskit SDK (ab Juli 2025 durchqiskit-qasm3-importv0.6.0 ) unterstützt nicht das Parsen von Deklarationen des Typsdurationoder des Typsstretchaus OpenQASM 3 Dateien. Die Hardware unterstützt in begrenztem Umfang Zeiträume wiestretch.
- Die Schaltungen müssen in den Backend-ISA transpiliert werden, damit sie auf der Hardware IBM laufen. Dies schließt aus, dass benutzerdefinierte
gateDefinitionen und übergeordnete Konstrukte wie Gate-Modifikatoren (z. B.inv @) wortwörtlich für die Ausführung auf Hardware gültig sind, aber dertranspileProzess löst sie in gültige ISA-Schaltungen. Qiskit SDK (ab Juli 2025, durchqiskit-qasm3-importv0.6.0 ) wertet Gate-Modifikatoren während des Parsens eifrig aus, so dass diese nicht in der resultierendenQuantumCircuitersichtlich sind, was möglicherweise zu Laufzeitkosten führt.
- Qiskit SDK kann einen strukturierten Kontrollfluss darstellen und diesen nach OpenQASM 3 exportieren. Die Anweisungen
continueundbreakkönnen technisch von Qiskit dargestellt werden, werden aber nicht einmal von innerhalb des Qiskit SDK.forschleifen in Qiskit v2.1.0 werden nicht gut unterstützt. Verschachtelter Kontroll fluss (z. B. eineifinnerhalb einer anderenifoder eineelse ifAnweisung) ist nicht zur Ausführung auf Hardware.
- Qiskit SDK unterstützt die Deklaration jedes unterstützten klassischen Typs als
inputVariable auf dem Schaltkreis. Solche Variablen sind derzeit nicht für die Ausführung auf der Hardware geeignet und können nicht geladen werden von den Qiskit OpenQASM 3 Importer geladen werden. UngebundeneParameterObjekte, die in derQuantumCircuitvorhanden sind, werden alsinput float[64]Variablen exportiert. Bestimmte Laufzeitkonfigurationsoptionen können die Ausführung solcher Schaltungen auf einigen Backends ermöglichen.
Nächste Schritte
- Erfahren Sie, wie Sie mit IBM Quantum Composer OpenQASM Code erzeugen können.
- Siehe die OpenQASM 3 Qiskit API-Referenz.
- Siehe die OpenQASM 2 Qiskit API-Referenz.
- Lesen Sie den Abschnitt „Überprüfen Sie Ihr Programm“ durch.
- Besuchen Sie die OpenQASM Live-Spezifikation.