BasisTranslator
class qiskit.transpiler.passes.BasisTranslator(*args, **kwargs)
ベース: TransformationPass
与えられた EquivalenceLibrary から翻訳セットを検索することによって、ゲートをターゲット・ベースに翻訳する。
このパスはいくつかのステップを踏んで作動する:
- 入力回路からソース基底を決定する。
- デバイスのtarget_basisから開始し、提供された EquivalenceLibrary からのルールを使用して新しいゲートが生成され、ソース基底のすべてのゲートが生成された場合 に検索を停止する、基底セット上でダイクストラ検索を実行する。
- 発見されたパスは、 EquivalenceLibrary, からのルールのセットとして、ゲート置換ルールのセットに構成される。
- 構成された置換ルールは、target_basisにまだない各オペ・ノードにインプレースで適用される。
targetキーワード引数が指定されており、かつ Target そのオブジェクトが、 get_non_global_operation_names()によって計算されるように非グローバルな演算(すなわち、クビットのサブセットに対してのみ定義されている演算)を含む場合、このパスでは、出力変換をそれらの制約に適合させるよう試みます。 1クビットの演算の場合、これは単純明快です。このパスでは、グローバルな演算の集合と、そのクビットのみに定義された演算の集合の和集合を用いて検索を行います。 多量子ビットゲートの場合、事情はもう少し複雑になります。初期段階では単一量子ビットの場合と挙動が似ていますが、単に操作の対象となるすべての量子ビットを使用するだけでは(順序は重要ではないとしても)不十分です。 また、多量子ビット演算の量子引数の部分集合上に定義される可能性のある局所量子ビットについても考慮する必要があります。 つまり、非グローバルなマルチクビットゲートの探索に使用されるターゲットは、グローバル演算、同じクビットを共有する非グローバルなマルチクビットゲート、および使用されるクビットの任意の部分集合上で定義された非グローバルなゲートの和集合となる。
非グローバル演算の場合、より大きなマルチ量子ビット・ゲートのサブセットである量子ビットに非グローバル・ゲートが定義されていると、このパスの1回の実行で不完全な翻訳が出力される可能性がある。 例えば、 u ゲートが量子ビット0にのみ定義され、 x ゲートが量子ビット1にのみ定義されている場合、量子ビット0と1の2量子ビット演算を変換する際に、出力が量子ビット1に u 、量子ビット0に x 。 通常、このパスを2回実行すれば、これらの問題は修正される。
翻訳エラー
このパスは、入力ゲートを指定された基底に変換するパスがない場合にエラーとなる。 しかし、典型的な/デフォルトのプリセット・パスマネージャーでは、このパスはコンパイル・パイプラインのさまざまな段階で複数回実行される。 これは、変換される入力ゲートが、回路内の中間変換によって生成されたものであるため、潜在的に入力回路になかったことを意味する。 transpile() 回路内の中間変換によって生成されたものだからである。
このエラーが発生する場合、一般的には、ターゲット基底が普遍的でないか、または、インスタンスで使用されている EquivalenceLibrary インスタンスが BasisTranslator を渡す。 カスタム等価ルールの追加の詳細については、「 カスタム・ベース・ゲート 」を参照してください。
BasisTranslator インスタンスを初期化する。
param equivalence_library
BasisTranslator パスで使用される等価ライブラリ。 (このライブラリ内の命令は、このパスでは展開されない)
type equivalence_library
EquivalenceLibrary
param target_basis
['u3', 'cx']。
type target_basis
[リスト]ストリング
param ターゲット
バックエンドのコンパイル対象
タイプターゲット
ターゲット
param min_qubits
変換する入力ダグ内の操作の最小量子ビット数。
タイプmin_qubits
int
属性
is_analysis_pass
パスが分析パスかどうかをチェックする。
パスが AnalysisPass,、パスがDAGを分析し、その分析結果をプロパティセットに書き込むことができることを意味する。 この種のパスでは、DAGの変更は許されない。
is_transformation_pass
パスが変形パスかどうかをチェックする。
パスが TransformationPass, の場合、そのパスはDAGを操作することはできるが、プロパティセットを変更することはできない(ただし、読み取ることはできる)ことを意味する。
方法
execute
execute(passmanager_ir, state, callback=None)
入力Qiskit IRに対して最適化タスクを実行する。
パラメーター
- passmanager_ir (Any) – Qiskit IRを最適化する。
- state (PassManagerState) – パスマネージャー自身によるワークフロー実行に関連する状態。
- callback (Callable | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。
戻り値
Qiskit IRとワークフローの状態を最適化。
戻りの型
タプル [ Any, PassManagerState ]
name
run
run(dag)
入力DAGCircuitをターゲットベースに変換する。
パラメーター
dag (DAGCircuit) – インプット・ダグ
レイズ
TranspilerError - 目標基準に達しない場合
戻り値
翻訳された回路。
戻りの型
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するマネージャーの状態を渡す。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
パスマネージャーの状態を更新。
戻りの型