GateDirection
class qiskit.transpiler.passes.GateDirection(*args, **kwargs)
ベース: TransformationPass
ハードウェアの結合方向に合わせて非対称ゲートを修正する。
このパスは、cx、cz、ecr、swap、rzx、rxx、ryy、rzzゲートの置換をサポートする:
┌───┐┌───┐┌───┐
q_0: ──■── q_0: ┤ H ├┤ X ├┤ H ├
┌─┴─┐ = ├───┤└─┬─┘├───┤
q_1: ┤ X ├ q_1: ┤ H ├──■──┤ H ├
└───┘ └───┘ └───┘
global phase: 3π/2
┌──────┐ ┌───┐ ┌────┐┌─────┐┌──────┐┌───┐
q_0: ┤0 ├ q_0: ─┤ S ├─┤ √X ├┤ Sdg ├┤1 ├┤ H ├
│ ECR │ = ┌┴───┴┐├────┤└┬───┬┘│ Ecr │├───┤
q_1: ┤1 ├ q_1: ┤ Sdg ├┤ √X ├─┤ S ├─┤0 ├┤ H ├
└──────┘ └─────┘└────┘ └───┘ └──────┘└───┘
Note: This is done in terms of less-efficient S/SX/Sdg gates instead of the more natural
`RY(pi /2)` so we have a chance for basis translation to keep things in a discrete basis
during resynthesis, if that's what's being asked for.
┌──────┐ ┌───┐┌──────┐┌───┐
q_0: ┤0 ├ q_0: ┤ H ├┤1 ├┤ H ├
│ RZX │ = ├───┤│ RZX │├───┤
q_1: ┤1 ├ q_1: ┤ H ├┤0 ├┤ H ├
└──────┘ └───┘└──────┘└───┘
cz, swap, rxx, ryy and rzz directions are fixed by reversing their qargs order.このパスでは、属性内の量子ビットの位置が物理的な量子ビットのインデックスであると仮定します。 DAGCircuit.qubits 属性中の量子ビットの位置が物理的な量子ビットのインデックスであると仮定します。 例えば、 dag.qubits[0] がqubit 0の場合、次のようになる。 CouplingMap または Target.
GateDirection パス。
パラメーター
- coupling_map (CouplingMap) – カップリング・マップを表す有向グラフ。
- target (Target) – このパスで使用するバックエンドターゲット。 これが指定された場合、カップリング・マップの代わりに使用される
属性
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 ]
name
run
run(dag)
ダグに GateDirection。
有向結合マップに一致するようにcxノードを反転させる。 入力されたタグを変更する。
パラメーター
dag (DAGCircuit) – DAGからマップへ。
戻り値
カップリング・マップの再配置されたダグ
戻りの型
レイズ
TranspilerError - cxノードを反転させるだけでは回路をマッピングできない場合。
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するマネージャーの状態を渡す。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
パスマネージャーの状態を更新。
戻りの型