OpenQASM 3 und die „ Qiskit SDK “
Der Code auf dieser Seite wurde unter Berücksichtigung der folgenden Anforderungen entwickelt. Wir empfehlen die Verwendung dieser oder neuerer Versionen.
qiskit[all]~=2.5.2
Das Qiskit SDK bietet einige Werkzeuge zur Konvertierung zwischen OpenQASM Repräsentationen von Quantenprogrammen und der QuantumCircuit Klasse. Bitte beachten Sie, dass sich diese Werkzeuge noch in einer explorativen Entwicklungsphase befinden und in dem Maße weiterentwickelt werden, in dem die Unterstützung von Qiskit für dynamische Schaltungen, wie sie in OpenQASM 3 zum Ausdruck kommt, zunimmt.
Diese Funktion befindet sich noch in der Erprobungsphase. Es ist daher wahrscheinlich, dass sich die Syntax und die Fähigkeiten weiterentwickeln werden.
OpenQASM -3-Programm in Qiskit importieren
Sie müssen das Paket qiskit_qasm3_import installieren, um diese Funktion nutzen zu können. Installieren Sie mit dem folgenden Befehl.
pip install qiskit-qasm3-importDerzeit gibt es zwei High-Level-Funktionen für den Import von OpenQASM 3 in Qiskit. Diese Funktionen sind load(), die einen Dateinamen annimmt, und loads(), die das Programm selbst als Zeichenkette annimmt:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)In diesem Beispiel definieren wir ein Quantenprogramm mit OpenQASM 3 und verwenden loads() , um es direkt in ein QuantumCircuit:
import qiskit.qasm3
program = """
OPENQASM 3.0;
include "stdgates.inc";
input float[64] a;
qubit[3] q;
bit[2] mid;
bit[3] out;
let aliased = q[0:1];
gate my_gate(a) c, t {
gphase(a / 2);
ry(a) c;
cx c, t;
}
gate my_phase(a) c {
ctrl @ inv @ gphase(a) c;
}
my_gate(a * 2) aliased[0], q[{1, 2}][0];
measure q[0] -> mid[0];
measure q[1] -> mid[1];
while (mid == "00") {
reset q[0];
reset q[1];
my_gate(a) q[0], q[1];
my_phase(a - pi/2) q[1];
mid[0] = measure q[0];
mid[1] = measure q[1];
}
if (mid[0]) {
let inner_alias = q[{0, 1}];
reset inner_alias;
}
out = measure q;
"""
circuit = qiskit.qasm3.loads(program)
circuit.draw("mpl")Output:
Exportieren nach „ OpenQASM “ 3
Sie können Qiskit-Code nach OpenQASM 3 exportieren, und zwar mit dumps(), das in eine Zeichenkette exportiert, oder dump(), das in eine Datei exportiert.
Beispiel mit dumps()
from qiskit import QuantumCircuit
from qiskit.qasm3 import dumps
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
dumps(qc)Output:
'OPENQASM 3.0;\ninclude "stdgates.inc";\nbit[2] meas;\nqubit[2] q;\nh q[0];\ncx q[0], q[1];\nbarrier q[0], q[1];\nmeas[0] = measure q[0];\nmeas[1] = measure q[1];\n'
Beispiel mit dump()
from qiskit import QuantumCircuit
from qiskit.qasm3 import dump
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
f = open("my_file.txt", "w")
dump(qc, f)
f.close()Weitere Informationen finden Sie im Abschnitt Exportieren nach OpenQASM 3 in der API-Referenz.
Nächste Schritte
- Erfahren Sie in der Anleitung IBM Quantum Composer, wie Sie OpenQASM Code erzeugen.
- Lesen Sie die OpenQASM 3 Qiskit API-Referenz.
- Besuchen Sie den Abschnitt „Überprüfen Sie Ihr Programm “.
- Überprüfen Sie die OpenQASM Live-Spezifikation.