Skip to main content
IBM Quantum Platform

StagedPassManager

class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)

GitHub

ベース: PassManager

個々のステージから構築されるパスマネージャーパイプライン。

このクラスは、固定ステージからコンパイル・パイプラインを構築することができる。 StagedPassManager 各ステージはスタンドアロンのインスタンスとして定義される。 PassManager インスタンスとして定義される。 また、各ステージには pre_post_ 。 これにより、異なるステージを簡単に組み合わせたり置き換えたりすることができる。また、フックポイントを追加して、パイプラインをプログラムで変更することもできる。 ステージドパスマネージャーを使用する場合、個々のパスを変更することはできず、ステージを変更することしかできません。

デフォルトでは、 StagedPassManager のインスタンスは、抽象的な仮想回路から最適化され、指定されたバックエンドで実行可能なものまで、典型的なフルコンパイルパイプラインを定義する。 デフォルトの定義済みステージは以下の通り:

  1. init - 回路をバックエンドに組み込む前に実行する初期パス。
  2. layout - 回路内の仮想量子ビットをバックエンドの物理量子ビットにマッピングする。
  3. routing - バックエンドのカップリングマップで選択されたレイアウトで回路を実行できるようになるまで、必要に応じてゲートを挿入し、量子ビットの状態を移動させる。
  4. translation - 回路内のゲートをターゲットバックエンドの基底ゲートセットに変換する。
  5. optimization - 回路を最適化し、実行コストを削減する。 これらのパスは通常、収束基準が満たされるまでループで実行される。 例えば、収束基準は、回路の深さが連続した反復で減少しないことかもしれない。
  6. scheduling - 回路内の動作をスケジューリングするハードウェア認識パス。

後方互換性のため、これらのデフォルトステージの相対的な位置関係は、今後も安定したままである。 ただし、現在のステージの間に新しいステージをデフォルトのステージリストに追加することはできる。 例えば、将来のリリースでは、 logical_optimization のような新しいフェーズを、デフォルトのステージリストで既存の init ステージの直後に追加することができる。 ステージの相対的な位置が保持されるため、リリース間で動作が変わることはなく、既存の StagedPassManager

これらの段階は順番に実行され、に設定されている段階 None はスキップされます。 あるステージが複数回(つまり、異なる相対位置で)指定されている場合、そのステージに関連するパス(プリパスおよびポストパスを含む)は、宣言ごとに1回ずつ実行されます。 ここで、ある PassManager 入力が複数のステージで使用されている場合(たとえば、レイアウトと配線の両方をカバー Pass する入力など)、その入力を、対象となるステージの中で最も早い段階に設定することをお勧めします。

新しい StagedPassManager オブジェクトを初期化する

パラメーター

  • stages (Iterable[str]) – このインスタンスで使用するステージのオプションリスト。 これを指定しない場合は、デフォルトのステージ一覧が使用 ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] されます。 インスタンス化後、最終的なリストは不変となり、タプルとして格納されます。 あるステージが複数回(つまり、異なる相対位置で)指定されている場合、そのステージに関連するパス(プリパスおよびポストパスを含む)は、宣言ごとに1回ずつ実行されます。
  • kwargs - 初期値。 PassManagerstages で定義されたステージの初期値。 引数が定義されていない場合、ステージのデフォルトは None 、空/未定義のステージであることを示す。

レイズ

  • AttributeError - 入力キーワード引数のステージが定義されていない場合。
  • ValueError - 無効なステージ名が指定された場合。

属性

expanded_stages

pre_ および post_ フェーズを含む、パス・マネージャー・ステージの拡張。

invalid_stage_regex

デフォルト値: re.compile('\\s|\\+|\\-|\\*|\\/|\\\\|\\%|\\<|\\>|\\@|\\!|\\~|\\^|\\&|\\:|\\[|\\]|\\{|\\}|\\(|\\)')

stages

パスマネージャーステージ


方法

append

append(passes)

GitHub

パスセットをパスのスケジュールに追加する。

パラメーター

passes (Task | list[Task]) – スケジュールに追加するトランスパイラ・パスのセット。

レイズ

TranspilerError - パスの中のパスが適切なパスでない場合。

戻りの型

なし

draw

draw(filename=None, style=None, raw=False)

GitHub

ステージ・パス・マネージャーを描く。

警告

この関数は、ユーザーが制御可能な文字列(パス名など)を含むファイルに対して、システムのGraphvizツールを呼び出します。 この関数は、信頼できる入力に対してのみ呼び出すことを推奨します。

パラメーター

  • filename (str) – 画像を保存するファイルのパス。
  • style (dict) – キーはパスのクラス、値はそのパスを適用する色です。 その例はDEFAULT_STYLEで確認できます。 パスが複数のカテゴリに該当する場合、順序付き辞書を使用することで、優先順位に基づいた色分けを確実に実施できます。 指定された辞書に含まれていない値は、デフォルトの辞書から補完されます。
  • raw (bool) – その場合は True、画像ではなく、Dotの生の出力を保存してください。

remove

remove(index)

GitHub

スケジューラーの特定のパスを削除する。

パラメーター

index (int) – の位置に基づいて、削除するインデックスを渡す。 passes().

レイズ

PassManagerError - インデックスが見つからない場合

戻りの型

なし

replace

replace(index, passes)

GitHub

スケジューラーの特定のパスを置き換える。

パラメーター

  • index (int) – passes() の位置に基づいて、置き換えるインデックスを渡す。
  • passes (BasePass | list[BasePass]) – パスマネージャーのスケジュールに追加されるパス。

戻りの型

なし

run

run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)

GitHub

指定された circuits ですべてのパスを実行する。

パラメーター

  • circuits (_CircuitsT) – 登録されたすべてのパスを介して変換する回路(複数可)。

  • output_name (str | None) – 出力回路名。 None の場合、入力回路名と同じに設定される。

  • callback (Callable | None) –

    各パスの実行後に呼び出されるコールバック関数。 この関数は5つのキーワード引数で呼び出される:

    pass_ (Pass): the pass being run
    dag (DAGCircuit): the dag output of the pass
    time (float): the time to execute the pass
    property_set (PropertySet): the property set
    count (int): the index for the pass execution

    ここでのキーワード引数は、一般的な BasePassManager. このパス・マネージャーは、これらの引数を上記の形式に変換する。

    渡される正確な引数はパス・マネージャーの内部を明らかにするものであり、パス・マネージャーの内部が変更されると変更される可能性がある。 コールバック関数を複数のリリースで再利用する場合は、渡される引数が同じであることを確認してください。

    コールバック機能を使うには、kwargs dictを受け取って変数にアクセスする関数を定義する。 例:

    def callback_func(**kwargs):
        pass_ = kwargs['pass_']
        dag = kwargs['dag']
        time = kwargs['time']
        property_set = kwargs['property_set']
        count = kwargs['count']
        ...

    マルチプロセッシングでトランスピレーションを実行する場合、コールバック関数は親プロセスとは独立して、各サブプロセスのコンテキスト内で呼び出されます。

  • num_processes (int | None) – 並列実行が有効な場合、起動する並列プロセスの最大数。 この引数は、ユーザー設定ファイル内の設定と QISKIT_NUM_PROCS 環境変数PATH num_processes を上書きします。 システムデフォルトまたはローカルユーザー設定 None が使用されます。

  • property_set (dict[str, object] | None) – 与えられた場合、パスマネージャーパイプラインの PropertySet として使用する初期値です。 これは、分析を共有しても安全であることが分かっている場合に、ある実行から別の実行へと分析を持続させるために使用することができる。 いくつかの解析は、入力回路に特有であることに注意すること。 Targetそのため、この引数を使用する際には十分な注意が必要である。

戻り値

変換された回路(複数可)。

戻りの型

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

このマネジャーをリニア化して FlowControllerLinear別のパス・マネージャーの中にネストできるようにする。

戻り値

線形化されたパス・マネージャー。

戻りの型

FlowControllerLinear

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