コンパイルルーチン
qiskit.compiler
回路コンパイル関数
transpile
qiskit.compiler.transpile(circuits, backend=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, dt=None, approximation_degree=1.0, seed_transpiler=None, optimization_level=None, callback=None, output_name=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, target=None, hls_config=None, init_method=None, optimization_method=None, ignore_backend_supplied_default_methods=False, num_processes=None, qubits_initially_zero=True)
いくつかの望ましいトランスパイルターゲットに従って、1つまたは複数の回路をトランスパイルする。
トランスパイルは、 circuits が > 1のオブジェクトを持つリストである場合、マルチプロセッシングを使って並列に行われる可能性がある。 QuantumCircuit オブジェクトを持つリストである場合、ローカル環境と設定によっては、マルチプロセッシングを使って並列処理される可能性がある。
トランスパイルターゲット制約の優先順位付けは、次のように機能する。 target 入力が提供された場合、 backend 入力や緩い制約(basis_gates、 coupling_map、 dt )よりも優先される。 backend 、上記のリストから緩やかな制約と一緒に提供された場合、緩やかな制約は、対応するバックエンドの制約よりも優先される。 この動作は以下の表にまとめられている。 表の最初の列は、ユーザーが提供する可能性のある制約を要約し、各セルは、優先順位がその特定の制約入力に割り当てられているか、別の入力(ターゲット/バックエンド( V2 ))に割り当てられているかを示しています。
ユーザー提供 | ターゲット | バックエンド( V2 ) |
|---|---|---|
| ベーシスゲート | ターゲット | ベーシスゲート |
| カップリングマップ | ターゲット | カップリングマップ |
| dt | ターゲット | dt |
ターゲットの基底がクリフォード+Tゲートで構成されている場合、この関数は専用のクリフォード+Tトランスパイラ・パイプラインを構築します。詳細については、ドキュメントを clifford_t_pass_manager() 参照してください。 連続基底セットへのトランスパイルに関連する引数は、このフローでは無視されます。
パラメーター
-
circuits (_CircuitT) – トランスパイルする回路
-
backend (Backend | None) – 設定された場合、トランスパイラーは入力回路をこのターゲット・デバイスにコンパイルします。 他のオプションが明示的に設定されている場合 (例えば
coupling_map)、バックエンドのものが上書きされます。 -
basis_gates (list[str] | None) – アンロール先の基本ゲート名のリスト(例: g.:
['u1', 'u2', 'u3', 'cx'])。がの場合None、アンロールを行わない。 -
coupling_map (CouplingMap |list[list[int]] | None) –
マッピングのターゲットにカップリング・マップ(おそらくカスタム)を指示。 カップリング・マップが対称の場合は、両方向を指定する必要がある。
複数のフォーマットに対応:
CouplingMapインスタンス- リストは隣接行列として指定する必要があります。各要素は、バックエンドがサポートするすべての有向2量子ビット相互作用を表します。例: g.:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
initial_layout (Layout |dict |list | None) –
物理量子ビット上の仮想量子ビットの初期位置。 このレイアウトによって回路がcoupling_map制約に適合する場合、そのレイアウトが使用される。 トランスパイラーがスワップやその他の手段で量子ビットを並べ替える可能性があるため、最終的なレイアウトが同じであることは保証されない。 複数のフォーマットに対応:
-
Layoutインスタンス -
ディクトは仮想から物理へ:
{qr[0]: 0, qr[1]: 3, qr[2]: 5}-
フィジカルからバーチャルへ:
{0: qr[0], 3: qr[1], 5: qr[2]}
-
-
リスト
-
バーチャルからフィジカルへ:
[0, 3, 5] # virtual qubits are ordered (in addition to named) -
フィジカルからバーチャルへ:
[qr[0], None, None, qr[1], None, qr[2]]
-
-
-
layout_method (str | None) – レイアウト選択パスの名前('trivial'、'dense'、'sabre')。 これは、
layoutステージで使用する外部プラグイン名にもなる。 インストールされているプラグインのリストはlist_stage_plugins()stage_name引数に"layout"を指定してください。 -
routing_method (str | None) – ルーティング・パスの名前(「basic」、「lookahead」、「stochastic」、「sabre」、「none」)。 これは、ステージ
routingで使用する外部プラグイン名としても指定できます。 引数stage_nameに を"routing"指定してlist_stage_plugins()を実行すると、インストールされているプラグインの一覧を確認できます。 -
translation_method (str | None) – 翻訳パスの名前 (
"default","translator"または"synthesis")。 これは、translationステージで使用する外部プラグイン名にもなる。 インストールされているプラグインのリストはlist_stage_plugins()stage_name引数に"translation"を指定してください。 -
scheduling_method (str | None) – スケジューリングパスの名前。*
'as_soon_as_possible':貪欲に命令をスケジューリングする。 (alias:'asap') *'as_late_as_possible':すなわち、可能な限り量子ビットを基底状態に保つ。 (別名:'alap')Noneの場合、スケジューリングは行われない。 これは、schedulingステージで使用する外部プラグイン名にもなる。 インストールされているプラグインのリストはlist_stage_plugins()stage_name引数に"scheduling"を指定してください。 -
dt (float | None) – バックエンドのサンプル時間(分解能)(秒)。
None(デフォルト)の場合、backend.dt。 -
approximation_degree (float) – 回路近似に使用されるヒューリスティック・ダイヤル( 1.0=no 近似、 0.0=maximal 近似)
-
seed_transpiler (int | None) – トランスパイラのストキャスティック部分のランダムシードを設定する
-
optimization_level (int | None) –
回路の最適化をどの程度行うか。 より高いレベルは、より最適化された回路を生成するが、その代償としてトランスパイルタイムが長くなる。
- 0:最適化なし
- 1: 光の最適化
- 2: 重い最適化
- 3:さらに重い最適化
Noneの場合、レベル2がデフォルトとして選択される。 -
callback (Callable[[BasePass, DAGCircuit, float, PropertySet, int], Any] | None) –
各パスの実行後に呼び出されるコールバック関数。
pass_: 実行されるパス。|dag: パスのダグ出力。|time: パスの実行時間。|property_set: プロパティセット。|count: パス実行のインデックス。 渡される正確な引数は、パス・マネージャーの内部を明らかにするものであり、パス・マネージャーの内部が変更されると変更される可能性がある。 コールバック関数を複数のリリースで再利用する場合は、渡される引数が同じであることを確認してください。 コールバック機能を使うには、kwargs dictを受け取って変数にアクセスする関数を定義する。 例:def callback_func(**kwargs): pass_ = kwargs['pass_'] dag = kwargs['dag'] time = kwargs['time'] property_set = kwargs['property_set'] count = kwargs['count'] ... transpile(circ, callback=callback_func) -
output_name (str |list[str] | None) – 出力回路を識別するための文字列のリスト。 リストの長さは、パラメータ
circuitsの長さと正確に一致する必要があります。 -
unitary_synthesis_method (str) – 使用するユニタリー合成法の名前。 デフォルトでは
'default'。 インストールされているプラグインのリストはunitary_synthesis_plugin_names(). -
unitary_synthesis_plugin_config (dict | None) – ユニタリー合成プラグインに直接渡されるオプションの設定辞書。 デフォルトのユニタリー合成法はカスタムコンフィギュレーションを取らないため、デフォルトではこの設定は何の効果もない。 これは、ユニタリー合成プラグインが
unitary_synthesis_method。 これは各ユニタリー合成プラグインのカスタムなので、このオプションの使い方はプラグインのドキュメントを参照してください。 -
target (Target | None) – バックエンドのトランスパイラターゲット。 通常、これは
backend引数の一部として指定されるが、手動でTargetオブジェクトを手動で構築した場合は、ここで手動で指定することができる。 これはbackendからのターゲットを上書きする。 -
hls_config (HLSConfig | None) – 変換
HighLevelSynthesisパスに直接渡されるオプションの設定クラスHLSConfig。 この設定クラスを使用すると、さまざまな高レベルオブジェクトに対して、合成アルゴリズムの一覧とそのパラメータを指定することができます。 -
init_method (str | None) –
initステージで使用するプラグイン名。 デフォルトでは、外部プラグインは使用されない。 ステージ名の引数にlist_stage_plugins()をステージ名の引数に"init"。 -
optimization_method (str | None) –
optimizationステージで使用するプラグイン名。 デフォルトでは、外部プラグインは使用されない。 インストールされているプラグインのリストはlist_stage_plugins()stage_name引数に"optimization"を指定してください。 -
ignore_backend_supplied_default_methods (bool) –
Trueに設定すると、バックエンドが指定したデフォルトのメソッドは無視されます。 バックエンドによっては、バックエンド固有のコンパイル技術をサポートするカスタム・コンパイル・ターゲット固有のパスやプラグインをサポートするために、代替のデフォルト・メソッドを指定しているものもある。 これらのデフォルトを使用しないことを望む場合は、このオプションを使用して、バックエンド固有のデフォルトを無効にします。 -
num_processes (int | None) – 並列実行が有効になっている場合、このtranspile呼び出しで起動する並列プロセスの最大数。 この引数は、ユーザー設定ファイルの
num_processes、および環境変数QISKIT_NUM_PROCSを上書きする。Noneに設定すると、システム・デフォルトまたはローカル・ユーザー設定が使用される。 -
qubits_initially_zero (bool) – 入力回路がゼロ初期化されているかどうかを示す。
戻り値
トランスパイルド・サーキット
レイズ
TranspilerError - トランスパイラへの不適切な入力(競合するパラメータなど)やパスのエラーの場合
戻りの型
_CircuitT