OpenQASM 3 と Qiskit SDK
このページのコードは、以下の要件に基づいて開発された。 これらのバージョンまたは新しいバージョンの使用をお勧めします。
qiskit[all]~=2.5.1
Qiskit SDKは、量子プログラムの OpenQASM 表現と QuantumCircuit クラスの間で変換するためのいくつかのツールを提供します。 なお、これらのツールはまだ探索的な開発段階であり、 OpenQASM 3によって表現される動的回路機能に対するQiskitのサポートが増加するにつれて進化し続ける。
Note
この機能はまだ試行段階である。 したがって、シンタックスや能力は進化していくだろう。
OpenQASM 3プログラムをQiskitにインポートする
この機能を使用するには、 qiskit_qasm3_import パッケージをインストールする必要があります。 以下のコマンドでインストールする。
pip install qiskit-qasm3-import現在、 OpenQASM 3からQiskitにインポートするために2つの高レベル関数が利用可能です。 これらの関数は、ファイル名を受け取る load() と、プログラム自体を文字列として受け取る loads() である:
import qiskit.qasm3
qiskit.qasm3.load(file_name)
qiskit.qasm3.loads(program_string)この例では、 OpenQASM 3 を使って量子プログラムを定義し、 loads() を使ってそれを直接 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:
OpenQASM 3にエクスポート
Qiskitコードを OpenQASM 3にエクスポートするには、文字列にエクスポートする dumps()、またはファイルにエクスポートする dump()。
例: 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'
例: 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()詳細については、APIリファレンスの「 OpenQASM 3へのエクスポート 」セクションを参照のこと。
次のステップ
推奨事項
- IBM Quantum Composerのガイドで、 OpenQASM コードを生成する方法を学んでください。
- OpenQASM 3 Qiskit API リファレンスを確認してください。
- 「プログラムの確認」 のトピックをご覧ください。
- OpenQASM ライブ仕様を確認する。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。