トランスパイルのデフォルト設定と構成オプション
パッケージバージョン
このページのコードは、以下の要件を用いて開発されました。 これらのバージョン以上を使用することを推奨します。
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
抽象回路は、QPU がサポートするベースゲートの種類が限られており、任意の操作を実行できないため、トランスパイルが必要です。Transpiler の役割は、任意の回路を指定した QPU 上で実行できるように変換することです。これは、回路をサポートされているベースゲートに変換し、回路の接続性が QPU のものと一致するように必要に応じて SWAP ゲートを導入することで行われます。
パスマネージャーを使ったトランスパイル で説明されているように、generate_preset_pass_manager 関数を使って パスマネージャー を作成し、回路または回路のリストをその run メソッドに渡してトランスパイルできます。generate_preset_pass_manager を呼び出す際は、最適化レベルと Backend のみを指定して他のオプションにはデフォルト値を使用することも、追加の引数を渡してトランスパイルを細かく調整することもできます。
パラメーターを指定しない基本的な使い方
この例では、追加のパラメーターを指定せずに回路とターゲット QPU を Transpiler に渡します。
回路を作成して結果を確認します:
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit import QuantumCircuit
from qiskit.circuit.library import grover_operator, DiagonalGate
from qiskit_ibm_runtime.fake_provider import FakeSherbrooke
# Create circuit to test transpiler on
oracle = DiagonalGate([1] * 7 + [-1])
qc = QuantumCircuit(3)
qc.h([0, 1, 2])
qc = qc.compose(grover_operator(oracle))
# Add measurements to the circuit
qc.measure_all()
# View the circuit
qc.draw(output="mpl")
回路をトランスパイルして結果を確認します:
from qiskit.transpiler import generate_preset_pass_manager
# Specify the QPU to target
backend = FakeSherbrooke()
# Transpile the circuit
pass_manager = generate_preset_pass_manager(
optimization_level=1, backend=backend
)
transpiled_circ = pass_manager.run(qc)
# View the transpiled circuit
transpiled_circ.draw(output="mpl", idle_wires=False)