Skip to main content
IBM Quantum Platform

VF2 コンパイラパスオブジェクト


QkVF2LayoutConfiguration

typedef struct QkVF2LayoutConfiguration QkVF2LayoutConfiguration

VF2 レイアウトの設定は正常に完了しました。 これは、APIが時間の経過とともに変更されることを可能にするカプセル化された構成です。以下のコンストラクタとセッターを使用して、これを作成および変更します。

qk_vf2_layout_configuration_new

QkVF2LayoutConfiguration *qk_vf2_layout_configuration_new(void)

VF2 パスに対して、すべての処理を完全に無制限で実行する新しい構成を作成します。

使用後は戻り値で qk_vf2_layout_configuration_free 呼び出してメモリを解放してください。

戻り値

設定へのポインタ。

qk_vf2_layout_configuration_free

void qk_vf2_layout_configuration_free(QkVF2LayoutConfiguration *config)

オブジェクト QkVf2LayoutConfiguration を解放する。

安全

がヌルでないポインタであるが、有効でアラインメント config が取れた QkVF2LayoutConfiguration オブジェクトを指していない場合、動作は未定義である。

パラメーター

  • config – 設定へのポインタ。

qk_vf2_layout_configuration_set_call_limit

void qk_vf2_layout_configuration_set_call_limit(QkVF2LayoutConfiguration *config, int64_t before, int64_t after)

VF2 アルゴリズムが最初の一致を見つける前後に、マッピングを拡張しようとする試行回数を制限する。

VF2 アルゴリズムは、実行したステップ数を追跡し、制限に達した時点で終了する。 最初の試合が見つかった後、制限は「前」の制限から「後」の制限に切り替わり、実行されたステップ数はリセットされない。

安全

が有効で、アラインメントが正しく、NULLでないへのポインタでない config``QkVF2LayoutConfiguration 場合、動作は未定義である。

パラメーター

  • config – 更新する設定。
  • before – 最初の一致が見つかるまでに許可する試行回数。 境界を設定しない場合は負の数値を設定してください。
  • after – 最初のマッチ(存在する場合)が見つかった後に許可する試行回数。 境界を設定しない場合は負の数値を設定してください。

qk_vf2_layout_configuration_set_time_limit

void qk_vf2_layout_configuration_set_time_limit(QkVF2LayoutConfiguration *config, double limit)

VF2 検索の実行時間を制限する。

これは厳密な制限ではありません。改善されたレイアウトが検出された場合にのみチェックされます。 このオプションを使用すると、パスも非決定的になります。 代わりに qk_vf2_layout_configuration_set_call_limit を使用することが一般的に推奨されています。

安全

が有効で、アラインメントが正しく、NULLでないへのポインタでない config``QkVF2LayoutConfiguration 場合、動作は未定義である。

パラメーター

  • config – 更新する設定。
  • 制限時間 – 許可する秒数。 制限なしで実行するには、非正の値を設定してください。

qk_vf2_layout_configuration_set_max_trials

void qk_vf2_layout_configuration_set_max_trials(QkVF2LayoutConfiguration *config, uint64_t limit)

検出される完全な改善の総数を制限する。

VF2 の探索木は QkTarget、評価値に基づいて動的に剪定されるため、この制限は特に強力ではない。 より厳密な境界については qk_vf2_layout_configuration_set_call_limit を参照のこと。

安全

が有効で、アラインメントが正しく、NULLでないへのポインタでない config``QkVF2LayoutConfiguration 場合、動作は未定義である。

パラメーター

  • config – 更新する設定。
  • 制限 – 終了する前に許可する完全なレイアウトの数。 無制限に実行するには0に設定してください。

qk_vf2_layout_configuration_set_shuffle_seed

void qk_vf2_layout_configuration_set_shuffle_seed(QkVF2LayoutConfiguration *config, uint64_t seed)

入力グラフのノードシャッフルを指定されたシードで有効化する。

これにより、 VF2 のマッチング順序が実質的に変更され、理論上は有界探索の空間がノードインデックスに基づいて偏らないことを意味する。 実際には、Qiskitは「平均」モード(初期レイアウト探索に対応)で実行する際、 VF2++ の順序付け改善を利用し、「正確」モードでは単位写像から開始する。 これらの順序付けヒューリスティックはどちらも、通常、ランダム化よりも与えられた問題に対する結果を見つける可能性がはるかに高い。

この関数が呼び出されなかった場合、ノードのシャッフルは行われません。

安全

が有効で、アラインメントが正しく、NULLでないへのポインタでない config``QkVF2LayoutConfiguration 場合、動作は未定義である。

パラメーター

  • config – 更新する設定。
  • seed – アクティブ化されたシャッフルに使用するシード値。

qk_vf2_layout_configuration_set_score_initial

void qk_vf2_layout_configuration_set_score_initial(QkVF2LayoutConfiguration *config, bool score_initial)

インタラクショングラフの初期の「些細な」レイアウトを熱心にスコアリングすべきかどうか。

通常、 VF2true パスを使用してハードウェアに既にローダウンされた回路を改善する場合、スコアベースのプルーニングのベースラインを設定するためにこれを設定します。 そうでない場合は、この設定をデフォルトのまま false にしておくことで、おそらく何の影響も与えない計算を回避できます。

安全

が有効で、アラインメントが正しく、NULLでないへのポインタでない config``VF2LayoutConfiguration 場合、動作は未定義である。

パラメーター

  • config – 更新する設定。
  • score_initial – 最初の単純なレイアウトを積極的にスコアリングするかどうか。

QkVF2LayoutResult

typedef struct QkVF2LayoutResult QkVF2LayoutResult

関数 qk_transpiler_pass_standalone_vf2_layout を実行すると、その解析結果を QkVF2LayoutResult オブジェクトとして返します。 このオブジェクトには、トランスパイラパスの結果、パスがレイアウトを見つけられたかどうか、およびパスによって選択されたレイアウトが含まれます。

関数

qk_vf2_layout_result_has_match

bool qk_vf2_layout_result_has_match(const QkVF2LayoutResult *layout)

結果が見つかったかどうかを確認する。

true には、「単純」レイアウトを試すよう指定された構成が最良であると判断された状況(その結果、適切な場合には補助量子ビットの拡張を除き、量子ビットの再ラベル付けは不要となる)が含まれる。 明示的な再マッピングが保存されているかどうかを判別するには qk_vf2_layout_result_has_improvement 参照してください。

安全

が有効な、ヌルでないへの QkVF2LayoutResultポインタでない layout 場合、動作は未定義である。

パラメーター

  • レイアウト – レイアウトへのポインタ

戻り値

true VF2-based レイアウトパスで一致が見つかった場合。

qk_vf2_layout_result_has_improvement

bool qk_vf2_layout_result_has_improvement(const QkVF2LayoutResult *layout)

結果が単純なレイアウトに対する改善であるかどうかを確認する。

安全

が有効な、ヌルでないへの QkVF2LayoutResultポインタでない layout 場合、動作は未定義である。

パラメーター

  • レイアウト – レイアウトへのポインタ

戻り値

true VF2-based レイアウトパスがより良い一致を見つけた場合。

qk_vf2_layout_result_map_virtual_qubit

uint32_t qk_vf2_layout_result_map_virtual_qubit(const QkVF2LayoutResult *layout, uint32_t qubit)

指定された仮想量子ビットに対応する物理量子ビットを取得する

安全

が結果 QkVF2LayoutResult を含む有効な非ヌルポインタでない layout 場合、または量子ビットが初期回路の範囲外である場合、動作は未定義となる。

パラメーター

  • レイアウト – レイアウトへのポインタ
  • qubit – 物理量子ビットを取得するための仮想量子ビット

戻り値

指定された仮想量子ビットによってマッピングされる物理量子ビット

qk_vf2_layout_result_free

void qk_vf2_layout_result_free(QkVF2LayoutResult *layout)

オブジェクト QkVF2LayoutResult を解放する

QkCircuit *qc = qk_circuit_new(1, 0);
安全

が有効な、ヌルでないへの QkVF2Layoutポインタでない layout 場合、動作は未定義である。

パラメーター

  • レイアウト – 解放するレイアウトへのポインタ
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。