プリセットされたパスワードマネージャー
qiskit.transpiler.preset_passmanagers
このモジュールには、トランスパイラ用のプリセット・パス・マネージャを生成するための関数が含まれています。 プリセット・パス・マネージャは、Qiskitのコンパイラの一部として、さまざまな最適化レベルにおける 関数 transpile() 内で回路変換を実行するために使用されるインスタンスですが StagedPassManager 、スタンドアロンとしても使用することができます。 ここでの機能は2つの部分に分かれています。 前者は、( 低レベルのプリセット・パス・マネージャーの生成 )で transpile() 使用される、パス・マネージャー全体を生成するために用いられる関数を包含しており、後者は、プリセット・パス・マネージャーを構成するステージを(全体または一部)構築するために用いられる関数を包含しています( ステージ生成関数 )。
低レベルプリセットパス生成器
連続基底
level_0_pass_manager
qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)
レベル0のパスマネージャー:バックエンドへのマッピング以外、明示的な最適化は行わない。
このパス・マネージャーは、ユーザーが指定した初期レイアウトを適用する。 もし何も与えられない場合、i番目の仮想量子ビットをi番目の物理量子ビットにマッピングすることからなる些細なレイアウトが使用される。 未使用の物理量子ビットはアンシラスペースとして割り当てられる。
パス・マネージャーは、次に回路を目的の基底に展開し、カップリング・マップに合うように回路を変換する。
パラメーター
pass_manager_config (PassManagerConfig) – パスマネージャーの設定。
戻り値
レベル0のパスマネージャー。
レイズ
TranspilerError - passmanagerの設定が無効な場合。
戻りの型
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
レベル1パスマネージャー:単純な隣接ゲートのコラプシングによる光の最適化。
このパス・マネージャーは、ユーザーが指定した初期レイアウトを適用する。 もし何も与えられず、些細なレイアウト(i番目の仮想→i番目の物理)で回路がカップリング・マップに適合する場合、そのレイアウトが使われる。 そうでなければ、回路は最も密に接続された結合部分グラフに写像され、スワップが挿入されて写像される。 未使用の物理量子ビットはアンシラスペースとして割り当てられる。 パス・マネージャーは、次に回路を目的の基底に展開し、カップリング・マップに合うように回路を変換する。 最後に、隣接ゲートの崩壊と冗長リセットの除去という形で最適化が行われる。
パラメーター
pass_manager_config (PassManagerConfig) – パスマネージャーの設定。
戻り値
1級パスマネージャー
レイズ
TranspilerError - passmanagerの設定が無効な場合。
戻りの型
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
レベル2パス・マネージャ:初期レイアウトの選択と可換性ルールを使用したゲート・キャンセルによる中程度の最適化。
このパス・マネージャーは、ユーザーが指定した初期レイアウトを適用する。 もし何も与えられなければ、完全なレイアウト(すなわち、すべての2量子ビット相互作用を満たすレイアウト)の探索が行われる。 そのようなレイアウトが見つからない場合、量子ビットは最も密に接続された部分集合にレイアウトされる。
パス・マネージャは次に、結合制約に合うように回路を変換する。 その後、基底に展開され、反転したcx方向が固定される。 最後に、可換ゲート・キャンセルと冗長リセット除去という形で最適化が行われる。
パラメーター
pass_manager_config (PassManagerConfig) – パスマネージャーの設定。
戻り値
2級合格マネージャー。
レイズ
TranspilerError - passmanagerの設定が無効な場合。
戻りの型
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
レベル3パスマネージャー:ノイズ適応型量子ビットマッピングと、可換則とユニタリー合成を使用したゲートキャンセルによる高度な最適化。
このパス・マネージャーは、ユーザーが指定した初期レイアウトを適用する。 もし何も与えられなければ、完全なレイアウト(すなわち、すべての2量子ビット相互作用を満たすレイアウト)の探索が行われる。 そのようなレイアウトが見つからず、デバイスの較正情報が利用可能な場合、回路は最高の読み出しを持つ量子ビットと、最も忠実度の高いCXゲートにマッピングされる。
パス・マネージャは次に、結合制約に合うように回路を変換する。 その後、基底に展開され、反転したcx方向が固定される。 最後に、可換ゲートのキャンセル、2量子ビット・ユニタリー・ブロックの再合成、冗長リセットの除去、最終的なレイアウトの改善といった形で最適化が行われる。
パラメーター
pass_manager_config (PassManagerConfig) – パスマネージャーの設定。
戻り値
3級合格マネージャー。
レイズ
TranspilerError - passmanagerの設定が無効な場合。
戻りの型
Clifford+T 基底関数セット
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
Clifford+T 基底へのトランスパイル用に、ステージング・パスマネージャーを生成する。
この関数は、ターゲット基底がクリフォード+Tゲートで構成されている場合に呼び出されます。 generate_preset_pass_manager() これは、以下の段階から構成される専用のトランスパイレーション・パイプラインを生成します:
- 初期化:大規模なゲートを1量子ビットゲートおよび2量子ビットゲートに分解し、論理最適化を行う。
- レイアウト:連続基底関数セットに使用されるデフォルトのレイアウト戦略を適用します。
- ルーティング:連続基底関数セットに使用されるデフォルトのルーティング戦略を適用します。
- RZ変換:回路をクリフォード+RZ基底に変換する。
- RZ最適化:Clifford+RZ基底内で回路を最適化する。
- T変換:回路をクリフォード+T基底に変換する。
- T最適化:Clifford+T基底内で回路を最適化します。
- スケジューリング:連続基底セットに使用されるデフォルトのスケジューリング戦略を適用します。
最良の結果を得るには、指定されたClifford+T基底に と の両方を含め、可能な限り多くのCliffordゲートを組み込むことを検討してください。 例:
basis_gates = get_clifford_gate_names() + ["t", "tdg"]これらの段階は現時点では実験的なものであり、変更される可能性があります。 特に、これらは(連続基底セットのステージとは異なり)現時点ではトランスパイラ・ステージのプラグインとして公開されていません。
パラメーター
- pass_manager_config (PassManagerCliffordTConfig) – パスマネージャーの設定。
- optimization_level (int) – 最適化レベル。 特に指定がない場合、デフォルトでは最適化レベル 2 が使用されます。 これは0、1、2、または3のいずれかです。 レベルが高くなるほど、より最適化された回路が生成される可能性が高まりますが、その代償としてトランスパイル時間が長くなります。
戻り値
ステージド・パス・マネージャー。
レイズ
TranspilerError - passmanagerの設定が無効な場合。
戻りの型
ステージ生成関数
generate_control_flow_options_check
qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)
制御フローを含むDAGで実行すると、無効なオプションと代わりに使用できるオプションを説明するエラーメッセージとともに失敗するパスマネージャを生成する。
戻り値
contains_x 与えられたオプションのいずれかが制御フローをサポートしていない場合、エラーを発生させますが、制御フローを持つ回路が与えられます。
戻りの型
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
指定された回路に制御フローが存在する場合、常にエラーを発生させるパス・マネージャーを取得する。
generate_unroll_3q
qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)
3q のアンロールを生成する
PassManager
パラメーター
- target (Target | None) – バックエンドを表すオブジェクト
Target - basis_gates (list[str] | None) – バックエンドターゲット上の基本ゲートを表すstrゲート名のリスト。
- approximation_degree (float | None) – 回路の近似に使用されるヒューリスティックダイヤル。ここで
1.0、 は近似を行わないこと(数値的許容誤差の範囲内)、0.0は最大の近似を行うことを意味する。 が利用可能な場合target、のNone値は、ターゲット内の演算において、報告されたエラー率の範囲内であれば近似が許容されることを示します。 - unitary_synthesis_method (str) – 採用すべき統一的合成法。
unitary_synthesis_plugin_names(). を使用すると、インストール済みのプラグインの一覧を確認できます。 - unitary_synthesis_plugin_config (dict | None) – オプションの辞書プラグインの設定については、プラグインごとに異なりますので、使用方法については各プラグインのドキュメントを参照してください。
- hls_config (HLSConfig | None) – pass で
HighLevelSynthesis使用するオプションの設定クラス。 さまざまな高レベルオブジェクトの合成方法を指定します。 - qubits_initially_zero (bool) – 入力回路がゼロ初期化されているかどうかを示す。
OptimizationMetricoptimization_metric (OptimizationMetric) – アンロール処理の最適化時に使用されるメトリックを定義するオブジェクト。
戻り値
アンロール 3q またはそれ以上のパス・マネージャー
戻りの型
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
レイアウトの埋め込みを生成する PassManager
これは、回路に対して初期レイアウトを展開・適用するために使用できるオブジェクトを PassManager 生成するために使用されます
パラメーター
coupling_map (Union[CouplingMap, Target]) – 回路を埋め込むためのバックエンドのカップリングマップ。
戻り値
レイアウトプロパティを前提とする埋め込みパスマネージャ
セットは以前の段階で設定されている
戻りの型
generate_routing_passmanager
qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)
ルーティングを生成する PassManager
パラメーター
- routing_pass (TransformationPass) – ルーティングを実行するパス
- target (Target) – バックエンドを表すオブジェクト
Target - coupling_map (CouplingMap) – ルーティングを行うためのバックエンドの結合マップ
- vf2_call_limit (int) – vf2 ポストレイアウトパスの内部呼び出し制限。 これが
Noneまたは0の場合、 vf2 ポストレイアウトは実行されません。 - seed_transpiler (int) – トランスパイラの確率的な部分に対して、ランダムなシードを設定します。 これは現在、 に
VF2PostLayoutのみ使用されており、 の-1デフォルト値(ランダム化を行わない設定)の使用を強く推奨します。 値がNone指定された場合、システムのエントロピーをシードとして使用します。 - check_trivial (bool) – true に設定すると、ルーティング後のパス実行は
VF2PostLayout、単純なレイアウトが試みられ、それが完全ではないと判断されたかどうかに基づいて行われるようになります。 これは、構築されたパスマネージャーが最初のレイアウト試行として実行TrivialLayoutされ、そのレイアウトが完璧な場合(プリセットパスマネージャーのレベル1の場合など)にのみ使用される場合にのみ必要です。 - use_barrier_before_measurement (bool) – true の場合(デフォルト)、トランスパイラ・パスは
BarrierBeforeFinalMeasurements、引数routing_passで指定されたパスの前に実行されます。 - vf2_max_trials (int) – vf2 ポストレイアウトパスの評価時に を実行する最大試行回数。 VF2 これが
Noneまたは0の場合、 vf2 ポストレイアウトは実行されません。
戻り値
ルーティング・パス・マネージャー
戻りの型
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
最適化前のループを生成する PassManager
このパス・マネージャーは、カップリング・マップからの方向性が尊重されているかどうかをチェックする。
関数 qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() は Qiskit 2.0 で非推奨となりました。 Qiskit 3.0 で削除されます。 翻訳プラグインはISAの方向性を尊重するように要求されるようになったので、通常は置き換える必要はない。
パラメーター
- target (Target) – バックエンドを表すオブジェクト
Target - coupling_map (CouplingMap) – 使用する結合マップ
- remove_reset_in_zero (bool) –
True、ゼロパスでのリセットの解除が生成される。 PassManager
戻り値
パス・マネージャー
戻りの型
generate_translation_passmanager
qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)
基準変換を生成する PassManager
パラメーター
- target (Target | None) – バックエンドを表すオブジェクト
Target - basis_gates (list[str] | None) – バックエンドターゲット上の基本ゲートを表すstrゲート名のリスト
- method (str) – 使用する基本翻訳方法
- approximation_degree (float | None) – 回路の近似に使用されるヒューリスティックダイヤル。ここで
1.0、 は近似を行わないこと(数値的許容誤差の範囲内)、0.0は最大の近似を行うことを意味する。 が利用可能な場合target、のNone値は、ターゲット内の演算において、報告されたエラー率の範囲内であれば近似が許容されることを示します。 - coupling_map (CouplingMap | None) – 物理回路上で合成が行われる場合の、バックエンドのカップリングマップ。 pulse_optimize が True/None で、かつ natural_direction が True/None の場合、coupling_map の方向性が考慮されます。
- unitary_synthesis_method (str) – 採用すべき統一的合成法。
unitary_synthesis_plugin_names(). を使用すると、インストール済みのプラグインの一覧を確認できます。 - unitary_synthesis_plugin_config (dict | None) – オプションの辞書プラグインの設定については、プラグインごとに異なりますので、使用方法については各プラグインのドキュメントを参照してください。
- hls_config (HLSConfig | None) – pass で
HighLevelSynthesis使用するオプションの設定クラス。 さまざまな高レベルオブジェクトの合成方法を指定します。 - qubits_initially_zero (bool) – 入力回路がゼロ初期化されているかどうかを示す。
戻り値
基礎翻訳パスマネージャー
戻りの型
レイズ
TranspilerError - method kwargが有効な値でない場合
generate_scheduling
qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)
ポスト最適化のスケジューリングを生成する PassManager
パラメーター
- instruction_durations (dict) – 指導時間辞書
- scheduling_method (str) – 使用するスケジューリング方法は、
'asap'/'as_soon_as_possible'または'alap'/ のいずれか。'as_late_as_possible' - timing_constraints (TimingConstraints) – ハードウェアによるタイムアライメントの制限。
- target (Target) – バックエンドを表すオブジェクト
Target
戻り値
スケジューリング・パス・マネージャー
戻りの型
レイズ
TranspilerError - scheduling_method kwargが有効な値でない場合