UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
ベース: TransformationPass
基礎ゲートに従ってゲートを合成する。
ある基底ゲート上のユニタリーを合成する。
このパスは、あるゲート忠実度(経由 target)が与えられると、ユニタリー演算を近似できる。 ヒューリスティックダイヤルを設定することで、より多くの approximation_degree近似を強制できます。
パラメーター
- basis_gates (list[str]) – 対象となるゲート名のリスト。 これが指定されない場合は、
target引数を使用しなければならない。 これとtargetの両方が指定された場合、targetの値が使用され、これは無視される。 - approximation_degree (float) – 回路近似に使用されるヒューリスティック・ダイヤル( 1.0=no approximation, 0.0=maximal approximation)。 近似は、元のユニタリーから逸脱する代償として、合成回路をより安価にすることができる。 None の場合、ゲート忠実度に基づいて近似が行われる。
- coupling_map (CouplingMap) – 合成が物理回路上で行われる場合は、ターゲットのカップリング・マップ。
pulse_optimizeがTrue/Noneで、natural_directionがTrue/Noneの場合、coupling_map の方向性が考慮される。 - pulse_optimize (bool) – 合成時にパルスを最適化するかどうか。 値が
Noneの場合、それを試みるが、成功しなければ後退する。 パルス最適化合成が成功しない場合、Trueの値はエラーとなる。 - natural_direction (bool) – 2量子ビットゲートの方向性を考慮した合成を適用するかどうか。
pulse_optimizeがTrueまたはNoneの場合のみ適用される。 自然な方向は、まずカップリング・マップが一方向かどうかをチェックすることによって決定される。 カップリングマップがない場合、またはカップリングマップが双方向の場合、ターゲットプロパティからの継続時間が短い方のゲート方向が使用される。 Trueに設定され、自然な方向が決定できない場合は、次のようになります。TranspilerError. Noneに設定すると、自然な方向が決定できなくても例外は発生しない。 - synth_gates (list[str]) – 合成するゲートのリスト。 None かつ
pulse_optimizeが False または None の場合、デフォルトは['unitary']。Noneとpulse_optimize == Trueの場合、デフォルトは['unitary', 'swap'] - method (str) – 使用するユニタリー合成法プラグイン。
- min_qubits - 合成するユニタリの最小量子ビット数。 これがセットされていて、ユニタリーが指定された量子ビット数より少ない場合は合成されません。
- plugin_config - 指定されたユニタリー合成プラグインに直接渡されるオプションの追加設定引数(
dict)。 デフォルトのプラグインには余分な引数がないので、デフォルトでは何の効果もない。 ユニタリー合成プラグインのドキュメントを参照してください。 - target - オプション。
Targetパスがコンパイルされるターゲット・デバイス。 指定された場合、これはbasis_gatesとcoupling_mapに設定された値より優先される。 - fallback_on_default – 非デフォルトの合成
method方法が指定されている場合、その方法が操作を合成できないか、合成された回路がターゲットに適合しない場合に、デフォルトの合成方法を使用するかどうかを指定します。
レイズ
TranspilerError - method が指定されたが、インストールされたプラグインリストに見つからない場合。 インストールされているプラグインのリストは unitary_synthesis_plugin_names()
属性
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)
dag で UnitarySynthesis パスを実行する。
パラメーター
dag (DAGCircuit) – 入力ダグ。
戻り値
UnitaryGates をターゲット・ベースに合成したダグを出力する。
戻りの型
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するマネージャーの状態を渡す。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
パスマネージャーの状態を更新。
戻りの型