Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_pass_manager

qiskit.transpiler.generate_preset_pass_manager(optimization_level=2, backend=None, target=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, init_method=None, optimization_method=None, dt=None, qubits_initially_zero=True, *, _skip_target=False)

GitHub

プリセットを生成する PassManager

この関数は、プリセット・パス・マネージャーを素早く生成するために使用されます。 プリセット・パスマネージャーは、この transpile() 関数でデフォルトとして使用されるパスマネージャーです。 この関数は、関数が transpile() 内部で構築・使用しているものと同様のスタンドアロン PassManager オブジェクトを作成するための、便利でシンプルな方法を提供します。

パスマネージャー構築のためのターゲット制約は Target インスタンス BackendV2 インスタンス、または緩やかな制約(basis_gates, coupling_map, または dt)によって指定することができる。 ターゲット制約の優先順位は次のように機能する。 target 入力が提供された場合、 backend 入力や緩い制約よりも優先される。 backend 、上記のリストから緩やかな制約と一緒に提供された場合、緩やかな制約は、対応するバックエンドの制約よりも優先される。 この動作は以下の表にまとめられている。 表の最初の列は、ユーザーが提供する可能性のある制約を要約したもので、各セルは、優先順位がその特定の制約入力に割り当てられているか、別の入力(ターゲット/バックエンド( V1 )/バックエンド( V2 ))に割り当てられているかを示しています。

ユーザー提供
ターゲット
バックエンド( V2 )
ベーシスゲートターゲットベーシスゲート
カップリングマップターゲットカップリングマップ
dtターゲットdt

ターゲットの基底がクリフォード+Tゲートで構成されている場合、この関数は専用のクリフォード+Tトランスパイラーパイプラインを構築します。詳細については、を参照 generate_preset_clifford_t_pass_manager() してください。 連続基底セットへのトランスパイルにのみ適用される引数は、このフローでは無視されます。 例えば、単一量子ビットのユニタリー演算をクリフォード+Tシーケンスに合成する際には、この "unitary_synthesis_method" 要素は考慮されない。

パラメーター

  • optimization_level (int) –

    を生成する最適化レベル。 StagedPassManager のためのものです。 この指定がない場合、デフォルトで最適化レベル2が使用される。 これは0、1、2、3のいずれかである。 より高いレベルは、より最適化された回路を生成する可能性があるが、その代償としてトランスパイルタイムが長くなる:

    • 0:最適化しない
    • 1: 光の最適化
    • 2: 重い最適化
    • 3:さらに重い最適化
  • target``basis_gatesbackend (Backend | None) –、 coupling_map、および のデフォルト値のソースとして使用できる、オプションのバックエンドオブジェクト。 これら以外の引数が指定された場合、 backend それらはバックエンドに含まれる値よりも優先されます。

  • target (Target | None) – これは Target 、バックエンドのコンパイル先を表しています。 以下の属性は、設定されていない場合、この引数から推論されます: coupling_map および basis_gates

  • ['u1', 'u2', 'u3', 'cx']basis_gates (list[str] | None) – アンロール先のベースゲート名のリスト(例:)。

  • coupling_map (CouplingMap |list | None) –

    有向グラフはカップリング・マップを表している。 複数のフォーマットに対応:

    1. CouplingMap インスタンス
    2. リストは、各エントリーがバックエンドでサポートされるすべての有向2量子ビット相互作用を指定する隣接行列として与えられなければならない: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • initial_layout (Layout |list[int]) – 物理量子ビット上の仮想量子ビットの初期位置。

  • layout_method (str | None) – 初期の量子ビットの配置を選択する際に使用する。 Pass TrivialLayout'sabre'有効な選択肢は 'trivial''dense'、 であり、それぞれ、 DenseLayoutSabreLayout を表しています。 StagedPassManagerこれは、出力のステージ layout で使用する外部プラグイン名としても指定できます。 引数に を stage_name 指定して "layout" を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • routing_method (str | None) – このアーキテクチャ上で量子ビットをルーティングするために使用するパス。 BasicSwap有効な選択肢は 'basic''lookahead''sabre'、 であり、 'none' それぞれ、 LookaheadSwapSabreSwap、 を表し、ルーティングが必要な場合はエラーとなります。 StagedPassManagerこれは、出力のステージ routing で使用する外部プラグイン名としても指定できます。 引数に を stage_name 指定して "routing" を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • translation_method (str | None) – ゲートを基底ゲートに変換するための方法。 BasisTranslator'translator'有効な選択肢は、 'synthesis' それぞれ、 UnitarySynthesis 、 を表す。 StagedPassManagerこれは、出力のステージ translation で使用する外部プラグイン名としても指定できます。 引数に を stage_name 指定して "translation" を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • scheduling_method (str | None) – スケジュール設定に使用するパス。 'asap'有効な選択肢は 'alap' と です。 StagedPassManagerこれは、出力のステージ scheduling で使用する外部プラグイン名としても指定できます。 引数に を stage_name 指定して "scheduling" を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • approximation_degree (float | None) – 回路の近似に使用されるヒューリスティックダイヤル。ここで 1.0 、 は近似を行わないこと(数値的許容誤差の範囲内)、 0.0 は最大近似を行うことを意味する。 が利用可能な場合 target 、の None 値は、ターゲット内の演算において、報告されたエラー率の範囲内であれば近似が許容されることを示します。

  • seed_transpiler (int | None) – トランスパイラの確率的な部分に対して、ランダムなシードを設定します。 ここで指定されていない場合は、環境変数やユーザー設定ファイルでも指定できます。 QISKIT_TRANSPILER_SEED 優先順位は、この引数、次に環境変数、そして最後にユーザー設定オプションの順です。 したがって、この引数を設定すると、シードを設定する他の方法よりも優先されます。

  • unitary_synthesis_method (str) – 使用するユニタリー合成法の名前。 デフォルトでは 'default' 。 インストールされているプラグインのリストは unitary_synthesis_plugin_names().

  • unitary_synthesis_plugin_config (dict | None) – ユニタリー合成プラグインに直接渡される、オプションの設定辞書。 デフォルトでは、この設定は効果を持ちません。これは、デフォルトのユニタリー合成法ではカスタム設定を受け付けないためです。 unitary_synthesis_method これは、引数で単一合成プラグインが指定されている場合にのみ必要となります。 この設定は各ユニタリー合成プラグインごとに異なるため、このオプションの使用方法については、各プラグインのドキュメントを参照してください。

  • hls_config (HLSConfig | None) – 変換パスに HighLevelSynthesis 直接渡される、オプションの設定クラス HLSConfig です。 この設定クラスを使用すると、さまざまな高レベルオブジェクトに対して、合成アルゴリズムの一覧とそのパラメータを指定することができます。

  • StagedPassManagerinit_method (str | None) – 出力の ステージ init で使用するプラグイン名。 デフォルトでは、外部プラグインは使用されません。 ステージ名の引数として を指定 "init" して を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • StagedPassManageroptimization_method (str | None) – 出力の ステージ optimization で使用するプラグイン名。 デフォルトでは、外部プラグインは使用されません。 引数に を stage_name 指定して "optimization" を使用 list_stage_plugins() すると、インストール済みのプラグインの一覧を確認できます。

  • dt (float | None) – バックエンドのサンプリング時間(分解能)を秒単位で指定します。 (デフォルト) の場合 None 、バックエンドが指定されているときは、 backend.dt それが使用されます。

  • qubits_initially_zero (bool) – 入力回路がゼロ初期化されているかどうかを示す。

戻り値

指定されたオプションのプリセットパスマネージャ

戻りの型

StagedPassManager

レイズ

ValueError - optimization_level に無効な値が渡された場合。

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