トランスパイラー
概要
トランスパイレーションとは、与えられた入力回路を、最終的な回路を実行するために使用されるハードウェアのトポロジーや動作上の制約といった所望の基準に適合するように書き換えるプロセスである。 ここではこれについて詳しく説明することはせず、代わりにQiskitのドキュメントにある モジュ qiskit.transpiler ールの説明を参照してください。
ここでは、a を b FermionicCircuit へトランスパイラ処理する方法を説明することに焦点を当てています QuantumCircuit。
ステージ
概念的には、トランスパイラ処理をいくつかの段階に分けています:
ステージ | 説明 |
|---|---|
| 入力 | DAGデータ構造に変換する |
| 最適化 | フェルミオンレベルの最適化 |
| レイアウト | フェルミオンから量子ビットへの配置 |
| 総説 | フェルミオンからクビットへの合成 |
| 量子ビット | 量子ビットレベルでのトランスパイレーションの継続 |
| 出力 | DAGデータ構造から変換する |
入力
さまざまなトランスパイラーのパスは、回路演算を格納するための基礎となるデータ構造 FermionicDAGCircuit として を用いて動作するように実装されています。 このような有向非循環グラフ(DAG)は、回路の探索や操作を行うための効率的なデータモデルを提供する。
しかし、エンドユーザーは、より直感的なインターフェースとデータモデルを備えているため FermionicCircuit 、 を使用する可能性が高い。 したがって、この入力ステージでは、単に FermionicCircuitToDAG トランスパイラ・パスを実行するだけです。
最適化
トランスパイレーション・パイプラインのこの段階では、回路の型をのインスタンスとして保持しつつ、回路の最適化を行うことができます FermionicDAGCircuit。 したがって、トランスパイレーション・パイプラインのこの段階では、量子ビット情報は必要とされない(あるいは必ずしも利用可能ではない)。
レイアウト
トランスパイレーションプロセスに関するグローバルな設定の一つに、フェルミオンからクビットへの「レイアウト」があります。 これはユーザーが指定する必要があり、指定されたフェルミオンからクビットへのマッピングと一致していなければなりません(つまり、選択されたマッピングにおいて、固定数のフェルミオンが異なる数のクビットで表現される場合、設定されたレイアウトはその点を考慮したものでなければなりません)。
一般的な場合、フェルミオンモードは、必ずしも占有数基底を用いて量子ビットレジスタにエンコードされるわけではありません。 したがって、単一のフェルミオンモードを単一の量子ビットと対応付けることはできない。 したがって、ユーザーが指定したフェルミオンから量子ビットへの配置(F2QLayout)は、インスタンス FermionicRegister を QuantumRegister インスタンスと関連付けます。
コラム「 1 」 | コラム「 2 」 |
|---|---|
F2QLayout | フェルミオンモードレジスタと量子レジスタの対応付け。 |
このグローバル設定を構成するには、のフィールド f2q_layout にインスタンス F2QLayout を配置します property_set。 詳細については、「 レイアウトパス」 を参照してください。
総説
本質的に、トランスパイラ処理は F2QSynthesis トランスパイラ・パスによって行われます。 これは、Qiskitの「 HighLevelSynthesis pass」と概念的に似ており、高レベルの回路命令をトランスパイルするためにさまざまなプラグインを使用しています。 詳細については、直接 F2QSynthesis そのドキュメントを参照してください。
ある操作をクビットに基づく演算を用いてどのように合成できる FermionicGate かは、特定のゲート種別だけでなく、ユーザーが選択したフェルミオンからクビットへの写像にも依存する。 詳細については、「 トランスパイラ・パス・プラグイン」 を参照してください。
量子ビット
トランスパイレーション処理のこの段階では、すでにインスタンス DAGCircuit に到達しているため、通常通りQiskitのトランスパイレーションパイプラインを引き続き使用することができます。
将来、から得られた回路に関する知識を考慮した、量子ビットレベルの最適化を行うための追加のトランスパイラー処理が追加される FermionicCircuit 可能性があります!
出力
このステージでは、 QuantumDAGToCircuit トランスパイラー・パスを呼び出すことで、 Input の逆の処理を効果的に実装しています。
パスマネージャー
上記のすべてのステージは、さまざまな要素を調整 presets する仕組みに基づくデフォルトのステージです MultiStagePassManager。
個々のステージは、単一のパス(上記の入力、 合成、 出力ステージのように、ある内部表現(IR)から別の内部表現へと移行する場合)である場合もあれば、その内部パ BasePassManager スを変更可能なステージである場合もあります。
フェルミオン回路で動作するステージ( 最適化およびレイアウト )では、使用するパスマネージャーのタイプは です FermionicPassManager。
コラム「 1 」 | コラム「 2 」 |
|---|---|
FermionicPassManager( [タスク数, 最大反復回数] ) | あるものを別のもの FermionicCircuit に変換するトランスパイラ・パス・マネージャー。 |
コンバージョンパス
このモジュールでは、ごく基本的な変換処理がいくつか直接提供されています:
コラム「 1 」 | コラム「 2 」 |
|---|---|
FermionicCircuitToDAG() | を FermionicCircuit に変換します FermionicDAGCircuit。 |
FermionicDAGToCircuit() | を FermionicDAGCircuit に変換します FermionicCircuit。 |
QuantumDAGToCircuit() | を DAGCircuit に変換します QuantumCircuit。 |
事前設定
ユーザーの利便性を考慮し、このモジュール qiskit_fermions.transpiler.presets では、あらかじめ定義されたトランスパイルパイプラインを迅速に構築するためのさまざまな関数が用意されています。