ContextAwareDynamicalDecoupling
class qiskit.transpiler.passes.ContextAwareDynamicalDecoupling(*args, **kwargs)
ベース: TransformationPass
ゲートと量子ビットのコンテキストを考慮したX系列の動的デカップリングを実装する。
このパスでは、コンテキストを考慮した動的デカップリング(DD) [1が]実装されている
- デバイスに隣接する量子ビットに同時に発生するDDシーケンスは互いに直交している
- ECRゲートとCXゲートの観客量子ビットのDDシーケンスは、隣接するターゲット/制御量子ビットのエコーパルスと直交する。
互いに直交するDDシーケンスは、現在のところ、Xゲートだけで構成されるウォルシュ・ハダマード・シーケンスである。 したがって、場合によっては PadDynamicalDecouplingXY4 のような、より一般的なシーケンスと一緒に使うことが有益な場合もある。
このパスは、2量子ビットの相互作用がデバイス上で同じ持続時間を持つ場合に、遅延シーケンスを整列させ、隣接する量子ビットの潜在的な制御操作やターゲット操作を考慮に入れることができるため、最高の性能を発揮する。 しかし、そうでない場合でも有効である。
このパスが(以下の例のように)パス・マネージャー内で実行される場合、遅延を割り当てるために自動的に PadDelay が自動的に実行されます。 の中ではなく)スタンドアロンで実行する場合、遅延はすでに挿入されていなければならない。 PassManagerの中ではない)、遅延はすでに挿入されていなければならない。
例:
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import QFTGate
from qiskit.transpiler import PassManager
from qiskit.transpiler.passes import ALAPScheduleAnalysis, ContextAwareDynamicalDecoupling
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime.fake_provider import FakeSherbrooke
num_qubits = 10
circuit = QuantumCircuit(num_qubits)
circuit.append(QFTGate(num_qubits), circuit.qubits)
circuit.measure_all()
target = FakeSherbrooke().target
pm = generate_preset_pass_manager(optimization_level=2, target=target)
dd = PassManager([
ALAPScheduleAnalysis(target=target),
ContextAwareDynamicalDecoupling(target=target),
])
transpiled = pm.run(circuit)
with_dd = dd.run(transpiled)
print(with_dd.draw(idle_wires=False))参考文献
[1] A. セイフら(2024年)。 量子コンピューターにおける相関ノイズの抑制
コンテキストを考慮したコンパイル、 arXiv:2403.06852.
パラメーター
- **ターゲット **
Target回路を実行するデバイスの - min_duration - DDシーケンスを挿入する最小遅延時間(
dt)。 これは例えば、隣接する非常に短い遅延のために、大きな遅延ブロックが中断され、小さなブロックに分割されるような場合に有効である。Noneの場合、最長/最短のCXまたはECRゲートの差の少なくとも2倍に設定される。 - skip_reset µbits - 初期遅延とリセット後の遅延をスキップする。
- skip_dd } - デカップリングシーケンスの継続時間がアイドルウィンドウのこの割合を超えた場合、アイドル量子ビットの動的デカップリングをスキップする。 例えば、DDシーケンスがアイドル時間の95%以上を占める場合にスキップするには、この値を 0.95 に設定する。 1.の値は、DDシーケンスがウィンドウに収まる場合に適用されることを意味する。
- pulse_alignment - ゲート・タイミング割り当てのハードウェア制約(
dt)。 提供された場合、挿入されたゲートはこの値の整数倍でのみ実行される。 これは通常、backend.configuration().timing_constraintsで提供される。Noneの場合、これはtargetから抽出される。 - coloring_strategy -
rx.greedy_graph_colorで使用されるカラーリング戦略。 デフォルトは飽和戦略で、これは2部グラフで最適である( [2の]セクション 1.2.2.8 を参照)。
参考文献
[2] A. コソウスキー、そしてK. マヌーシェフスキ、グラフの古典的色付け、グラフの色付け、
2-19, 2004. ISBN 0-8218-3458-4.
属性
is_analysis_pass
パスが分析パスかどうかをチェックする。
パスが AnalysisPass,、パスがDAGを分析し、その分析結果をプロパティセットに書き込むことができることを意味する。 この種のパスでは、DAGの変更は許されない。
is_transformation_pass
パスが変形パスかどうかをチェックする。
パスが TransformationPass, の場合、そのパスはDAGを操作することはできるが、プロパティセットを変更することはできない(ただし、読み取ることはできる)ことを意味する。
方法
execute
execute(passmanager_ir, state, callback=None)
入力Qiskit IRに対して最適化タスクを実行する。
パラメーター
- passmanager_ir (Any) – Qiskit IRを最適化する。
- state (PassManagerState) – パスマネージャー自身によるワークフロー実行に関連する状態。
- callback (Callable | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。
戻り値
Qiskit IRとワークフローの状態を最適化。
戻りの型
タプル [ Any, PassManagerState ]
get_orthogonal_sequence
name
run
run(dag)
DAGCircuitでパスを実行する。 これはパス開発者によって実装される。
パラメーター
dag (DAGCircuit) – パスが実行されるダグ。
レイズ
NotImplementedError - パスが未実装の場合。
戻りの型
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するマネージャーの状態を渡す。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
パスマネージャーの状態を更新。
戻りの型