Skip to main content
IBM Quantum Platform

UnitarySynthesis

class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)

GitHub

ベース: 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_directionTrue/ の場合 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_gatescoupling_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)

GitHub

入力Qiskit IRに対して最適化タスクを実行する。

パラメーター

  • passmanager_ir (DAGCircuit) – 最適化対象のQiskit IR。
  • state (DAGCircuit) – パスマネージャー自身によるワークフローの実行に関連する状態。
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。

戻り値

Qiskit IRとワークフローの状態を最適化。

戻りの型

タプル [ DAGCircuitPassManagerState ]

name

name()

GitHub

パスの名前

戻りの型

str

run

run(dag)

GitHub

dag で UnitarySynthesis パスを実行する。

パラメーター

dag (DAGCircuit) – 入力ダグ。

戻り値

UnitaryGates をターゲット・ベースに合成したダグを出力する。

戻りの型

DAGサーキット

update_status

update_status(state, run_state)

GitHub

ワークフローのステータスを更新する。

パラメーター

  • state (PassManagerState) – 更新するマネージャーの状態を渡す。
  • run_state (RunState) – 現在のタスクの完了状況。

戻り値

パスマネージャーの状態を更新。

戻りの型

PassManagerState

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。