Skip to main content
IBM Quantum Platform

UnitarySynthesisPlugin

class qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin

GitHub

ベース: ABC

抽象ユニタリー合成プラグインクラス

この抽象クラスは、ユニタリー合成プラグインのインターフェースを定義する。


属性

max_qubits

ユニタリー合成プラグインがサポートする最大量子ビット数を返します。

合成されるユニタリーのサイズがこの値を超える場合、 default プラグインが使用されます。 上限がない場合は、 None を返し、すべてのユニタリー(>= min_qubits が定義されている場合)は、このプラグインが有効になったときに渡されます。

min_qubits

ユニタリー合成プラグインがサポートする最小の量子ビット数を返します。

合成されるユニタリーのサイズがこの値以下の場合、 default プラグインが使用される。 下限がない場合は None を返し、このプラグインが有効になると、すべてのユニタリー(<= max_qubits が定義されている場合)がこのプラグインに渡される。

supported_bases

合成にサポートされている塩基の辞書を返す

これは、キーが文字列のbasisで、値がbasisが動作するゲート名のリストである辞書を返すことが期待される。 合成法が複数の塩基をサポートしていない場合、これは None を返すはずである。 例:

{
    "XZX": ["rz", "rx"],
    "XYX": ["rx", "ry"],
}

このメソッドによって辞書が返される場合、実行kwargsは、移行のために設定されたターゲット基底ゲートにマッチする基底文字列(すなわち、辞書のキー)のリストを含むパラメータ matched_basis 。 ディクショナリ内にターゲット基底ゲートセットにマッチするエントリがない場合、 matched_basis kwargは空リストに設定され、プラグインは、プラグインの能力にマッチしないターゲット基底ゲートセットに対処する方法を選択できる。

supports_basis_gates

プラグインが basis_gates

これが True を返した場合、プラグインの run() メソッドに basis_gates kwarg が渡され、対象となるバックエンドがサポートしているゲート名のリストが渡されます。 例えば、['sx', 'x', 'cx', 'id', 'rz']です。

supports_coupling_map

プラグインが coupling_map

これが True を返すと、プラグインの run() メソッドは1つのクワーグ coupling_map を受け取る。 coupling_map kwargはタプルに設定される。 CouplingMap タプルに設定され、最初の要素はターゲットバックエンドのqubit接続を表すオブジェクトで、2番目の要素はunitaryが乗っているカップリングマップのqubitインデックスを表す整数のリストになります。 ターゲット・バックエンドにカップリング・マップが設定されていない場合、 coupling_map kwargの値は (None, qubit_indices) になることに注意。

supports_gate_errors

プラグインが gate_errors

gate_errors は、 {gate_name: {(qubit_1, qubit_2): error}} の形式の辞書となる。 例:

{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}

このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲートエラーを報告するかどうかに依存するため、完全でなかったり、空だったりする可能性があることに注意してください。 gate_errors で報告されるゲート・エラー・レートは、ターゲット・デバイス Backend オブジェクトによって提供されるものであり、正確な意味はバックエンドによって異なる可能性がある。

supports_gate_errors_by_qubit

プラグインが gate_errors_by_qubit

これは、 supports_gate_errors/gate_errors 、同じデータの異なるビューを使用することによって異なります。 ゲート名でキー設定される代わりに、これは量子ビットでキー設定され、(ゲート名の代わりに)ゲートを表すインスタンスを使用する。 Gate インスタンスを使ってゲートを表します(ゲート名の代わりに)。

gate_errors_by_qubit は、 {(qubits,): [Gate, error]} の形式の辞書となる。 例:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲートエラーを報告するかどうかに依存するため、完全でなかったり、空だったりする可能性があることに注意してください。 gate_errors で報告されるゲート・エラー・レートは、ターゲット・デバイス Backend オブジェクトによって提供されるものであり、正確な意味はバックエンドによって異なる可能性がある。

デフォルトは False

supports_gate_lengths

プラグインが gate_lengths

gate_lengths は、 {gate_name: {(qubit_1, qubit_2): length}} の形式の辞書となる。 例:

{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}

ここで、 length の値は秒単位である。

このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲート長を報告することに依存するため、完全でなかったり、空であったりする可能性があることに注意してください。

supports_gate_lengths_by_qubit

プラグインが gate_lengths_by_qubit

これは、 supports_gate_lengths/gate_lengths 、同じデータの異なるビューを使用することによって異なります。 ゲート名でキー設定される代わりに、これは量子ビットでキー設定され、(ゲート名の代わりに)ゲートを表すインスタンスを使う。 Gate インスタンスでゲートを表します

gate_lengths_by_qubit は、 {(qubits,): [Gate, length]} の形式の辞書となる。 例:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

ここで、 length の値は秒単位である。

このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲート長を報告することに依存するため、完全でなかったり、空であったりする可能性があることに注意してください。

デフォルトは False

supports_natural_direction

2-qubit ゲートの方向性を natural_direction として考慮するためのトグルをプラグインがサポートしているかどうかを返す。

のドキュメントを参照のこと。 UnitarySynthesis のドキュメントを参照のこと。

supports_pulse_optimize

pulse_optimize として、プラグインが合成中のパルスを最適化するトグルをサポートしているかどうかを返します。

のドキュメントを参照のこと。 UnitarySynthesis のドキュメントを参照のこと。

supports_target

プラグインがオプションとして target

targetTarget オブジェクトになります。

False デフォルトでは、プラグイン・インターフェイスが Target クラスより前のものだからです。 プラグインがこの属性に対して True を返す場合、プラグインは,,, のいずれかが設定されていれば、渡された値の代わりに Targetsupports_gate_lengthssupports_gate_errorssupports_coupling_mapsupports_basis_gates のいずれかが設定されている場合、渡された値の代わりに使用されることが期待されます(理想的には、これらのパラメータはすべて重複した情報を含む必要がありますが)。


方法

run

abstractmethod run(unitary, **options)

GitHub

与えられたユニタリー行列に対して合成を実行する

パラメーター

  • unitary (numpy.ndarray) – に合成するユニタリー行列。 DAGCircuit オブジェクト
  • options - クラスの support_* メソッドの出力に基づいて渡されるオプションの kwargs。 のこれらのメソッドのドキュメントを参照してください。 UnitarySynthesisPlugin のドキュメントを参照してください。

戻り値

ユニタリーのダグ回路表現。 あるいは、 (dag, wires) という形式のタプルを返すこともできる。 dag は、ユニタリーの回路表現のダグ回路表現で、 wires は、以下のマッピングに使用するマッピングワイヤである。 qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). タプルを返し、 wiresNone の場合、これは DAGCircuit だけが返されたのと同じように振る舞います。 さらに、 None 、代替は行われない。

戻りの型

DAGサーキット

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