Einführung in OpenQASM
OpenQASM (Open Quantum Assembly Language), eine maschinenunabhängige Programmierschnittstelle, die mit IBM® QPUs kompatibel ist, ist eine imperative Programmiersprache zur Beschreibung von Quantenschaltungen. OpenQASM verwendet das Quantenschaltungsmodell, um Quantenprogramme als geordnete Sequenzen parametrisierter Operationen (wie Gates, Messungen und Resets) und klassischer Echtzeitberechnung auszudrücken. Neben Quantenalgorithmen kann OpenQASM Schaltungen beschreiben, die zur Charakterisierung, Validierung oder Fehlersuche von Quantenprozessoren gedacht sind.
Da sich die Anforderungen der QPU-Entwicklung weiterentwickelt haben, hat sich die Feature-Liste von OpenQASM als Reaktion darauf erweitert; die neueste Version, OpenQASM 3, enthält Erweiterungen einschließlich klassischer Feed-Forward-Flusskontrolle, Gate-Modifikatoren und Puls-Implementierungen.
OpenQASM ist aufgrund seiner Vielseitigkeit die Wahl für eine Vielzahl von Zielgruppen. Die Einleitung zum OpenQASM 3-Papier1 gibt Beispiele:
"Obwohl OpenQASM keine High-Level-Sprache ist, möchten viele Benutzer einfache Quantenschaltungen von Hand mit einer ausdrucksstarken domänenspezifischen Sprache schreiben. Forscher, die sich mit Schaltungskompilierung beschäftigen, benötigen High-Level-Informationen, die in den Zwischendarstellungen aufgezeichnet sind, um die Optimierungs- und Synthesealgorithmen zu informieren. Experimentatoren bevorzugen die Bequemlichkeit, Schaltungen auf einem relativ hohen Level zu schreiben, müssen aber oft Timing- oder Puls-Level-Gate-Beschreibungen an verschiedenen Punkten in der Schaltung manuell modifizieren. Hardware-Ingenieure, die die klassischen Controller und Wellenformgeneratoren entwerfen, bevorzugen Sprachen, die angesichts der Hardware-Einschränkungen praktisch zu kompilieren sind und die Schaltungsstruktur explizit machen, die die Controller nutzen können."
OpenQASM ist das gemeinsame Austauschformat unter unabhängigen Quantensoftware-Tools. Für Entwickler, die ein Tool für die Schaltungskonstruktion bevorzugen, ein anderes für die Transpilierung und so weiter, ist OpenQASM die Lingua Franca, die als Brücke zwischen ihnen fungiert.
Das Qiskit SDK bietet Möglichkeiten zur Konvertierung zwischen OpenQASM und der QuantumCircuit-Klasse (siehe OpenQASM 2 und Qiskit und OpenQASM 3 und Qiskit für Anweisungen).
Weitere Informationen findest du in der OpenQASM Live Specification.
OpenQASM-Code-Beispiel: Cat State
OPENQASM 3;
include "stdgates.inc";
const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits
h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}
c = measure q; // measure quantum register
Nächste Schritte
- Erfahre, wie du OpenQASM-Code im Leitfaden IBM Quantum Composer generierst.
- Lies die OpenQASM 3 Feature-Tabelle.
- Lies die OpenQASM 3 Qiskit API-Referenz.
- Lies die OpenQASM 2 Qiskit API-Referenz.
- Besuche die OpenQASM Live Specification.