Skip to main content
IBM Quantum Platform

VF2Layout

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

GitHub

ベース: AnalysisPass

回路のレイアウトをカップリング・グラフ上に選択するためのパスを、部分グラフ同型問題として、 VF2++ によって解く。

もし解決策が見つかれば、それは「完璧なレイアウト」であり、それ以上のスワップマッピングやルーティングは必要ないことを意味する。 解決策が見つかれば、レイアウトはプロパティセットに property_set['layout'] として設定される。 ただし、解が見つからなかった場合は、 property_set['layout'] 。 停止理由はすべてのケースで property_set['VF2Layout_stop_reason']VF2LayoutStopReason に列挙された値のいずれかに設定される:

  • "solution found":完璧なレイアウトが見つかった場合。
  • "nonexistent solution":完璧なレイアウトが見つからなかった場合。
  • ">2q gates in basis": VF2Layout ベースで仕事ができないなら

デフォルトでは、このパスは指定された target ( target が指定されていない場合は properties ) のエラー率に基づいてヒューリスティック・スコアリング・マップを構築する。 しかし、このパスの前に分析パスを実行し、 ErrorMap インスタンスでプロパティセットに vf2_avg_error_map を設定することができる。 値が NaN 、理想的なエッジとして扱われる:

from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap

error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)

これは2量子ビットのターゲットのエラーマップを表し、平均 1q エラー率は0量子ビットが 0.0024 、1量子ビットが 0.0032 。 そうすると、(0, 1)で動作するゲートの平均 2q エラー率は 0.01、(1, 0)はターゲットでサポートされていない。 が実行されたときに、プロパティ・セットで vf2_avg_error_map キーとして設定されていれば、これが得点に使われる。 VF2Layout が実行されたときに

VF2Layout パスインスタンスを初期化する

パラメーター

  • coupling_map (CouplingMap) – カップリング・マップを表す有向グラフ。
  • strict_direction (bool) – Trueの場合、カップリング・マップの方向を考慮する。 デフォルトは False です。
  • seed (int | None) – 与えられた pRNG シードを用いて、結合グラフにおける物理量子ビットのラベル付けをノードインデックスに対してシャッフルする。 None OSのエントロピーを用いたシード生成(したがって非決定論的である)。 を使用すると -1 シャッフルが無効になります。
  • call_limit (None | int |tuple[int | None,int | None]) – 内部の VF2 同型検索がマッピングの拡張を試みる最大回数。 もし なら None、制限なし。 2-タプルである場合、制限は最初の要素から開始し、最初の一致が見つかった後に2番目の要素に切り替わるが、実行ステップ数はリセットされない。 これにより、あらゆるマッピングに対する長い検索を許可しつつ、見つかった場合には小さな拡張予算で素早く終了させることが可能となる。
  • time_limit (float) – 実行の合計時間制限 VF2Layout(秒単位) これは完全に厳密なものではありません。制限時間を超えた後、最初に発見された同型写像(存在する場合)で実行は終了します。 このオプションを設定すると、パスの決定論が破られます。
  • max_trials (int) – 設定されている場合、この数の完全なレイアウトが検出された後にアルゴリズムは終了する。 スコアリングがリアルタイムで行われるため、候補レイアウトの大部分は完全になる前に検索から除外されるため、このオプションはほとんど意味をなさない。 初期制限値の改善に費やす時間を低く制限するには、2 call_limit -タプル形式の2番目の項目に低い値を設定する。
  • target (Target) – VF2Layout を実行するバックエンドデバイスを表すターゲット。 指定された場合、 coupling_mapTarget の設定値に優先します。 もし、 target の値が、制約のない理想的なバックエンドをモデルにしているのであれば、 coupling_map の値が使われる。

レイズ

TypeError - 実行時に、 coupling_maptarget のどちらも指定されていない場合。


属性

is_analysis_pass

パスが分析パスかどうかをチェックする。

パスが AnalysisPass,、パスがDAGを分析し、その分析結果をプロパティセットに書き込むことができることを意味する。 この種のパスでは、DAGの変更は許されない。

is_transformation_pass

パスが変形パスかどうかをチェックする。

パスが TransformationPass, の場合、そのパスはDAGを操作することはできるが、プロパティセットを変更することはできない(ただし、読み取ることはできる)ことを意味する。


方法

execute

execute(passmanager_ir, state, callback=None)

GitHub

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

パラメーター

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

戻り値

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

戻りの型

タプル [ Any, PassManagerState ]

name

name()

GitHub

パスの名前

戻りの型

str

run

run(dag)

GitHub

レイアウト・メソッドを実行する

update_status

update_status(state, run_state)

GitHub

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

パラメーター

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

戻り値

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

戻りの型

PassManagerState

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