Skip to main content
IBM Quantum Platform

VF2PostLayout

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

GitHub

ベース: AnalysisPass

回路をカップリング・グラフに転置した後、既存のレイアウトを改良するためのパス。サブグラフ同型問題として、 VF2++ によって解決される。

とは異なり VF2Layout トランスパイラ・パスは、トランスパイレーション・パイプラインの初期段階で回路の初期レイアウトを見つけるように設計されていますが、このトランスパイラ・パスは、トランスパイレーションが完了した後に、より良いレイアウトを見つけようとするように設計されています。 トランスパイラの最初のレイアウト段階では、トランスパイラ後のように多くの情報は得られない。 このパスは、レイアウトパスと同様のパイプラインでペアになるように設計されている。 このパスでは、回路からアイドルワイヤーを取り除き、 VF2 を使用して、より忠実に回路を実行できる結合グラフの部分グラフを見つけ、新しい量子ビットを使用するように回路レイアウトを更新する。 このパスで使用されるアルゴリズムは arXiv:2209.15512.

もし解が見つかれば、回路に利用できる誤差の少ないレイアウトがあることを意味する。 解決策が見つかれば、レイアウトは property_set['post_layout'] としてプロパティセットに設定される。 しかし、解が見つからないか、より良い解が見つからない場合は、 property_set['post_layout'] 。 停止理由はすべてのケースで property_set['VF2PostLayout_stop_reason']VF2PostLayoutStopReason に列挙された値のいずれかに設定される:

  • "solution found":解決策が見つかった場合。
  • "no better solution found":回路の初期レイアウトが最適解である場合。
  • "nonexistent solution":解決策が見つからなかった場合。
  • ">2q gates in basis":もし VF2PostLayout、回路の基本が機能しないなら。

デフォルトでは、このパスは提供された target のエラー率に基づいてヒューリスティック・スコアリング・マップを構築する。 しかし、このパスの前に分析パスを実行し、 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 キーとして設定されていれば、これが得点に使われる。 VF2PostLayout が実行されたときに

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

パラメーター

  • target (Target) – VF2PostLayout を実行するバックエンドデバイスを表すターゲット。
  • seed (int) – PRNGのシードを設定する。 -1 ノードシャッフルを行わないことを意味する。
  • call_limit (int) – VF2 の各実行で試みる状態訪問の数。
  • time_limit (float) – 実行時間の合計を秒単位で指定 VF2PostLayout
  • strict_direction (bool) – パスがカップリンググラフの厳密な方向に従うように設定されているかどうか。 これをfalseに設定すると、パスは結合グラフのどの辺も弱い辺として扱い、相互作用グラフは無向グラフになる。 レイアウトの評価には、各クビットと 2q リンクの平均エラーレートを使用する。 これにより、基底変換の前にパスを実行し、 1q、 2q。 しかし、 strict_direction=True 、パスが入力の DAGCircuit オブジェクトが run() への入力オブジェクトがターゲット命令セットの中にあることを期待する。
  • max_trials (int) – レイアウトを見つけるために VF2 を実行する最大試行回数。 0 (デフォルト)は「無制限」を意味する。

レイズ

TypeError - 実行時に target


属性

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で行ってください。