UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
ベース: TransformationPass
基礎ゲートに従ってゲートを合成する。
ある基底ゲート上のユニタリーを合成する。
このパスは、あるゲート忠実度(経由 target)が与えられると、ユニタリー演算を近似できる。 ヒューリスティックダイヤルを設定することで、より多くの approximation_degree近似を強制できます。
このパスは、デフォルトの合成プラグインを使用する場合、マルチスレッドで動作し、デフォルトではCPUの数と同じ数のスレッドを持つスレッドプールを起動する可能性があります。 環境変数 RAYON_NUM_THREADS を使って、スレッド数を調整することができます。 たとえば、 を設定 RAYON_NUM_THREADS=4 すると、スレッドプールは 4 スレッドに制限されます。
パラメーター
- basis_gates – 対象とするゲート名のリスト。 これが指定されていない場合は、
target引数を使用する必要があります。targetこれと の両方が指定された場合、 のtarget値が使用され、これは無視されます。 - approximation_degree – 回路の近似に使用されるヒューリスティックダイヤル( 1.0=no 近似、 0.0=maximal 近似)。 近似を行うことで、元のユニタリーから逸脱することを代償として、合成回路のコストを削減できる。
Noneその場合、近似はゲートのフィデリティに基づいて行われる。 - coupling_map – 物理回路上で合成を行う場合の、対象の結合マップ。 が
True/Noneで、かつnatural_directionがTrue/ の場合pulse_optimize、coupling_mapNoneの方向性が考慮されます。 - pulse_optimize – 合成時にパルスを最適化するかどうか。 値が
Noneの場合、試行されますが、成功しなかった場合はフォールバックします。 パルス最適化合成が成功しなかった場合、この値はTrueエラーを引き起こします。 - natural_direction – 2量子ビットゲートの方向性を考慮して合成を行うかどうか。
Noneこれは、がTrueまたは の場合pulse_optimizeにのみ適用されます。 自然方向は、まず結合写像が一方向性を持つかどうかを確認することで決定される。 カップリングマップが存在しない場合、またはカップリングマップが双方向である場合は、ターゲットプロパティのうち持続時間が短い方のゲート方向が使用されます。TranspilerErrorTrue に設定されており、自然な方向を特定できない場合、例外が発生します。 None に設定した場合、自然な方向を特定できない場合でも例外は発生しません。 - synth_gates – 合成するゲートのリスト。
['unitary']None の場合、かつpulse_optimizeが False または None である場合は、デフォルト値として を使用する。 もしNoneかつpulse_optimize == Trueであれば、デフォルトでは['unitary', 'swap'] - method – 使用するユニタリー合成法のプラグイン。
- 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 (DAGCircuit) – 最適化対象のQiskit IR。
- state (DAGCircuit) – パスマネージャー自身によるワークフローの実行に関連する状態。
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。
戻り値
Qiskit IRとワークフローの状態を最適化。
戻りの型
name
run
run(dag)
dag で UnitarySynthesis パスを実行する。
パラメーター
dag (DAGCircuit) – 入力ダグ。
戻り値
UnitaryGates をターゲット・ベースに合成したダグを出力する。
戻りの型
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するマネージャーの状態を渡す。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
パスマネージャーの状態を更新。
戻りの型