Skip to main content
IBM Quantum Platform

HighLevelSynthesis

class qiskit.transpiler.passes.HighLevelSynthesis(*args, **kwargs)

GitHub

ベース: TransformationPass

高レベルのオブジェクトを合成し、カスタム定義を展開する。

このパスの入力はDAGであり、抽象的な数学オブジェクト(例えば、以下のような型のオブジェクト)を含む高位のオブジェクトを含むことができる。 LinearFunction型のオブジェクト)、注釈付き演算(型 AnnotatedOperation型のオブジェクト)、カスタム・ゲートなどです。

最も一般的な使用例では、 basis_gates または target のどちらかが指定された場合、すべての上位レベルのオブジェクトが合成されるため、出力はそのようなオブジェクトのない DAGCircuit になります。 より正確には、出力DAGのすべてのゲートは、ターゲットに直接サポートされているか、 equivalence_library

抽象数学オブジェクトは、合成プラグインを使用して、高レベル合成コンフィグで指定された合成メソッドを適用して合成される( HLSConfig).

例として、 op_aop_b は2つの上位オブジェクトの名前であり、 op_a-オブジェクトは、追加パラメータを必要としない2つの合成メソッド default と、2つのオプションの整数パラメータ option_1option_2 を持つ other を持ち、 op_b-オブジェクトは、1つの合成メソッド default を持ち、 qc は、 op_aop_b オブジェクトを含む量子回路であると仮定する。 次のコード・スニペット:

hls_config = HLSConfig(op_b=[("other", {"option_1": 7, "option_2": 4})])
pm = PassManager([HighLevelSynthesis(hls_config=hls_config)])
transpiled_qc = pm.run(qc)

は、 op_b-オブジェクトに対して代替合成メソッド other を実行し、 op_a-オブジェクトを含む他のすべての高レベルオブジェクトに対して default メソッドを使用する方法を示しています。

注釈が付けられた操作(基本操作と、逆、制御、パワーの修飾子のリストからなる)は再帰的に合成され、まず基本操作が合成され、次にその逆、制御、パワーのバージョンを作成するための合成メソッドが適用される。)

カスタム・ゲートは、すべてのゲートがターゲットでサポートされるか、等価ライブラリに含まれるまで、その定義を再帰的に展開することで合成される。

basis_gatestarget も指定されていない場合、パスはトップレベルの抽象数学オブジェクトと注釈付き演算のみを合成し、ゲート definitions には降りない。 これは、プラグインを使って一部の高位オブジェクトを合成し、他のゲートはそのままにしておくという、旧来のパスの動作と一致している。

ハイレベル合成は、利用可能な補助量子ビットの情報と、その状態がクリーン( 0|0\rangle として定義)かダーティ(未知の状態)かの情報を、それぞれの引数 "num_clean_ancillas""num_dirty_ancillas" を介して合成ルーチンに渡します。 qubits_initially_zeroTrue (デフォルト)の場合、量子ビットは 0|0\rangle の状態にあると仮定される。 補助量子ビットを使って合成したブロックを回路に追加する場合、まずクリーンな補助量子ビットを使う。

合成法は補助量子ビットの状態を維持することを前提としている。 具体的には、ダーティな補助量子ビットはダーティな量子ビットとしてのみ再利用されるのに対し、クリーンな補助量子ビットは合成されたブロックの後でも 0|0\rangle

HighLevelSynthesis イニシャライザー。

パラメーター

  • hls_config – 回路内のさまざまな高レベルオブジェクトに対する合成手法やパラメータを指定する、高レベル合成の設定ファイル。 指定がない場合は、デフォルトの合成手法とパラメータが使用されます。
  • coupling_map – 結合マップとして表現される有向グラフ。
  • target – このパスで使用するバックエンドターゲット。 指定された場合、カップリングマップの代わりにこれを使用します。
  • use_qubit-deficiency_indices - この合成パスが、レイアウトが設定される前と後のどちらで実行されているか、つまり、上位レベルのオブジェクトの量子ビットインデックスがターゲットバックエンド上の量子ビットインデックスに対応しているかを示すフラグ。
  • equivalence_library - 使用される等価ライブラリ(このライブラリ内の命令は、このパスでは展開されない)。
  • basis_gates – アンロール先のターゲット基底名。例 [: ‘u3’、‘cx’。] も指定されている target 場合は無視されます。
  • min_qubits - 変換する入力ダグの操作の最小量子ビット数。
  • qubits_initially_zero - qubitsが初期状態で 0|0\rangle。これにより、高レベル合成でクリーンな補助量子ビット(つまりゼロ状態)を使用して演算を合成できます。
  • optimization_metric - ハイ・レベル・オブジェクトのデフォルト合成手法で使用される最適化基準を指定します(使用可能な場合)。

属性

is_analysis_pass

パスが分析パスかどうかをチェックする。

パスが AnalysisPass,、パスがDAGを分析し、その分析結果をプロパティセットに書き込むことができることを意味する。 この種のパスでは、DAGの変更は許されない。

is_transformation_pass

パスが変形パスかどうかをチェックする。

パスが TransformationPass, の場合、そのパスはDAGを操作することはできるが、プロパティセットを変更することはできない(ただし、読み取ることはできる)ことを意味する。


方法

execute

execute(passmanager_ir, state, callback=None)

GitHub

入力Qiskit IRに対して最適化タスクを実行する。

パラメーター

  • passmanager_ir (Any) – Qiskit IRを最適化する。
  • state (PassManagerState) – パスマネージャー自身によるワークフロー実行に関連する状態。
  • callback (Callable | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。

戻り値

Qiskit IRとワークフローの状態を最適化。

戻りの型

タプル [ Any, PassManagerState ]

name

name()

GitHub

パスの名前

戻りの型

str

run

run(dag)

GitHub

ダグに HighLevelSynthesis。

パラメーター

dag (DAGCircuit) – 入力ダグ。

戻り値

上位演算を合成したダグを出力する。

レイズ

  • TranspilerError - トランスパイラが与えられたDAGを合成できない場合
  • ** 例えば****、**** 指定された合成方法が利用できない場合**** )****.** –

戻りの型

DAGサーキット

update_status

update_status(state, run_state)

GitHub

ワークフローのステータスを更新する。

パラメーター

  • state (PassManagerState) – 更新するマネージャーの状態を渡す。
  • run_state (RunState) – 現在のタスクの完了状況。

戻り値

パスマネージャーの状態を更新。

戻りの型

PassManagerState

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