OpenQASM 3 et l' Qiskit SDK
Le code de cette page a été développé en tenant compte des exigences suivantes. Nous recommandons d'utiliser ces versions ou des versions plus récentes.
qiskit[all]~=2.5.1
Le SDK Qiskit fournit des outils de conversion entre les représentations OpenQASM des programmes quantiques et la classe QuantumCircuit. Notez que ces outils sont encore dans une phase exploratoire de développement et qu'ils continueront à évoluer au fur et à mesure que le support de Qiskit pour les capacités de circuits dynamiques exprimées par OpenQASM 3 augmentera.
Cette fonction est encore en phase exploratoire. Il est donc probable que la syntaxe et les capacités évolueront.
Importer un programme OpenQASM 3 dans Qiskit
Vous devez installer le paquet qiskit_qasm3_import pour utiliser cette fonction. L'installation se fait à l'aide de la commande suivante.
pip install qiskit-qasm3-importActuellement, deux fonctions de haut niveau sont disponibles pour l'importation de OpenQASM 3 dans Qiskit. Ces fonctions sont load(), qui prend un nom de fichier, et loads(), qui prend le programme lui-même sous la forme d'une chaîne de caractères :
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)Dans cet exemple, nous définissons un programme quantique à l'aide de OpenQASM 3, et nous utilisons loads() pour le convertir directement en un programme quantique 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:
Exporter vers OpenQASM 3
Vous pouvez exporter du code Qiskit vers OpenQASM 3 avec dumps(), qui exporte vers une chaîne de caractères, ou dump(), qui exporte vers un fichier.
Exemple avec 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'
Exemple avec 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()Pour plus d'informations, voir la section Exportation vers OpenQASM 3 de la référence API.
Etapes suivantes
- Apprenez à générer le code OpenQASM dans le guide IBM Quantum Composer.
- Consultez la référence de l 'API Qiskit sur OpenQASM 3.
- Consultez la rubrique « Vérifier votre programme ».
- Examinez les spécifications de OpenQASM Live.