Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_clifford_t_pass_manager

qiskit.transpiler.generate_preset_clifford_t_pass_manager(optimization_level=2, target=None, basis_gates=None, coupling_map=None, initial_layout=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, dt=None, qubits_initially_zero=True, rz_synthesis_config=None)

GitHub

StagedPassManagerClifford+T のプリセットを生成します。

この関数は、Clifford+T コンパイル用のプリセット・パスマネージャーを簡単に作成するための手段を提供します。 Clifford+T 基底を用いた や generate_preset_pass_manager()transpile() 代わりに、この関数を使用することをお勧めします。この関数では、Clifford+T コンパイル用に特別に調整された引数が用意されているためです。

パスマネージャーの構築におけるターゲット制約は、インスタンス Target を通じて、あるいは緩やかな制約(basis_gates, coupling_map, または dt)を介して指定することができます。

basis_gatesベースゲートが指定されていない場合(via でも via target でも指定されていない場合)、ベースゲートはデフォルトで Qiskit のすべてのクリフォード+T ゲートになります。 ただし、基底ゲートが指定されているにもかかわらず、それがクリフォード+T基底を表していない場合、エラーが発生することに注意してください。

簡単なClifford+Tパスマネージャーを生成して使用する:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_clifford_t_pass_manager

qc = QuantumCircuit(1)
qc.rz(2.3579, 0)

pm = generate_preset_clifford_t_pass_manager()
qct = pm.run(qc)

さまざまなオプションを設定できます。詳細については、引数のドキュメントを参照してください:

rz_synthesis_config = {
    "rz_synthesis_error": 1e-4,
    "rz_cache_error": 1e-5,
}

basis_gates = ["cx", "s", "sdg", "h", "t", "tdg"]
pm = generate_preset_clifford_t_pass_manager(
    rz_synthesis_config=rz_synthesis_config,
    basis_gates=basis_gates,
    optimization_level=3,
)

パラメーター

  • optimization_level (int) – を StagedPassManager 生成するための最適化レベル。 指定がない場合、デフォルトでは最適化レベル 2 が使用されます。 これは 0、1、2、または 3 のいずれかになります。 レベルが高いほど、より最適化された回路が生成される可能性がありますが、その代償としてトランスパイレーション時間が長くなる可能性があります。

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

  • 'tdg'``['cx', 's', 'sx', 't', 'tdg']basis_gates (list[str] | None) – アンロール先の基本ゲートの名前の一覧(例:)。と basis_gates の両 target 方が の場合、 basis_gates``None は、すべての標準クリフォードゲートに加え、 't' および を含んだものとして設定されます。

  • coupling_map (CouplingMap |list | None) –

    有向グラフは結合写像を表していた。 以下の形式に対応しています:

    1. CouplingMap インスタンス
    2. リストは隣接行列として指定する必要があります。各要素には、バックエンドがサポートするすべての有向2量子ビット相互作用が指定されます。例: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • dt (float | None) – 目標サンプリング時間(分解能)を秒単位で指定してください。 (デフォルト) の場合 None 、ターゲットが指定されているときは、 target.dt が使用されます。

  • initial_layout (Layout |list[int]) – 物理量子ビット上の仮想量子ビットの初期位置。

  • 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 です。 この設定クラスを使用すると、さまざまな高レベルオブジェクトに対して、合成アルゴリズムの一覧とそのパラメータを指定することができます。

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

  • rz_synthesis_config (dict | None) – pass で SynthesizeRZRotations 使用するオプションの設定クラス。 回路内でRZ回転をどのように合成するかを指定します。

戻り値

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

戻りの型

StagedPassManager

昇給

  • TranspilerError – Clifford+T 以外の基底が指定された場合。
  • ValueError – に対して optimization_level 無効な値が渡された場合。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。