QkTranspiler
この qk_transpile() 関数は、Qiskitのトランズパイラー (qiskit.transpiler) をCから利用できるようにします。 基本的な機能は、 Python -space版と同じ基盤コードを使用していますが、C言語向けに公開されているトランスパイラには、 Python 向けに公開されているものよりも多くの制限があります。 このトランスパイラは、C APIのみを使用して構築された回路を前提としており、スタンドアロンのC API環境でのみ動作するように設計されています。 Python と/Cが混在する環境では、正常に動作しない可能性があります。 Cと Python を併用する場合は、それらの回路に対して または transpile() generate_preset_pass_manager() 関数を呼び出す必要があります。
データ型
QkTranspileResult
struct QkTranspileResult
からのコンテナ結果オブジェクト qk_transpile
トランスパイラが指定されたターゲットの量子回路のコンパイルに成功すると、トランスパイルされた回路とレイアウトが返されます。 qk_transpile 関数が正常に実行されると、この構造体のフィールドへのポインタが書き込まれます。この構造体をNULLポインタで初期化することもできますし、 qk_transpile によって値が読み取られることはなく、値が書き込まれるだけなので、未設定のままにしておくこともできます。 qk_transpile を呼び出した後は、この構造体のメンバに対して qk_circuit_free と qk_transpile_layout_free を呼び出す責任がある。
QkCircuit *回路
組み立てられた回路。
QkTranspileLayout *レイアウト
仮想レイアウトから物理レイアウトへの初期および最終状態に関するメタデータ。
QkTranspileOptions
struct QkTranspileOptions
トランスパイラを実行するためのオプション
uint8_t 最適化レベル
トランスパイラを実行する最適化レベル。 有効な値は0、1、2、または3である。
int64_t 種子
トランスパイラの種。 負の数に設定すると、シードが設定されず、トランスパイラで使用されるRNGはシステムのエントロピーからシードされることを意味する。
二重近似_精度
近似度は、 1.0 が近似なし(数値公差まで)、 0.0 が最大近似を意味するヒューリックダイヤル。 NAN の値は、ターゲットの操作について報告されたエラー率まで近似が許容されることを示す。
QkTranspilerStageState
struct QkTranspilerStageState
トランスパイラ各ステージで共有される個々の属性を集約するコンテナ。 トランスパイルが正常に行われると、各ステージは、後続のステージで必要となる特定の属性をこのコンテナに書き込みます。 コンテナが初期化されていない場合、各ステージは必要に応じて新しいオブジェクトを初期化します。
qk_transpile_state_new
void qk_transpile_state_new(QkTranspilerStageState **state)空の
QkTranspilerStageStateオブジェクトへのポインタを作成する安全
が有効なポインタとして割り当てられていない
state場合、動作は未定義となります。パラメーター
- state – ポインタを格納するための、割り当てられたメモリ領域へのポインタ。
qk_transpile_state_free
void qk_transpile_state_free(QkTranspilerStageState *state)オブジェクト
QkTranspilerStageStateを解放する安全
が、への有効な(かつNULLではない
QkTranspilerStageState)ポインタでないstate場合、動作は未定義となる。パラメーター
- state – 解放する状態へのポインタ
qk_transpile_state_layout
QkTranspileLayout *qk_transpile_state_layout(QkTranspilerStageState *state)
オブジェクト `QkTranspilerStageState` からオブジェクトQkTranspileLayoutを取得します。このポインタは オブジェクト
stateが所有しているため、 を使用して解放してはなりませんqk_transpile_layout_free。 その代わりに、.qk_transpile_state_freeを使用して元のstateオブジェクトを解放してください。安全
が、への有効な(かつNULLではない
QkTranspilerStageState)ポインタでないstate場合、動作は未定義となる。パラメーター
- state – レイアウトを取得する状態へのポインタ。
戻り値
状態が所有するオブジェクト
QkTranspileLayoutへのポインタ。qk_transpile_state_layout_set
void qk_transpile_state_layout_set(QkTranspilerStageState *state, QkTranspileLayout *layout)オブジェクト
QkTranspileLayoutを、別のQkTranspilerStageStateオブジェクトのレイアウトとして設定します。このメソッドを呼び出すとオブジェクト
QkTranspileLayoutが破棄されるため、ユーザーは を呼び出す必要がなくなりますqk_transpile_layout_free。 ユーザーは、. を使用してfree、割り当てられた領域を解放する必要があります。安全
が、への有効な(かつNULLではない
QkTranspilerStageState)ポインタでないstate場合、動作は未定義となる。 がへの有効なポインタQkTranspileLayoutでないstate場合、動作は未定義となる。パラメーター
- state – レイアウトを設定する状態へのポインタ。
- layout – 使用するレイアウトへのポインタ。 レイアウトを解除するため
NULLかもしれません。
関数
qk_transpiler_default_options
QkTranspileOptions qk_transpiler_default_options(void)
トランスパイラのオプションのデフォルトを生成する
この関数は QkTranspileOptions を生成する。デフォルト設定は、 optimization_level 2、シードなし、近似なし。
戻り値
デフォルト設定を持つオブジェクト QkTranspileOptions 。
qk_transpile_stage_init
QkExitCode qk_transpile_stage_init(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)
回路上でトランスパイラのプリセット初期化ステージを実行する
Qiskit トランスパイラは、量子回路コンパイラであり、与えられた入力回路をQPUの制約に適合するよう書き換え、実行のために回路を最適化する。 この関数はトランスパイラの第一段階であるinitを実行します。initは抽象回路の最適化を行い、複数量子ビット操作を1量子ビットおよび2量子ビット操作に還元します。 詳細については初期化段階を参照してください。
この関数は、QiskitのC APIを使用して構築された回路でのみ使用してください。 このトランスパイラは、C経由で公開された機能のみを使用して回路に関する仮定を行います。 Python とCの混合環境では、通常 Python 経由でトランスパイラを呼び出す方が適切です。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
、 target、または stateが、それぞれ、 QkTarget、 QkTranspileLayout または への有効な(NULL QkDagではない)ポインタでない場合 dag、動作は未定義となります。 options a は、a QkTranspileOptions または b への有効なポインタ NULLでなければなりません。 error ポインタ char への有効なポインタ、または である必要があります NULL。 この関数によって、の内部ポインタの state 値が上書きされます。 参照先の値の解放が必要な場合は、この関数内では解放されないため、この関数の外で処理を行う必要があります。
パラメーター
- dag – トランスパイラを実行する回路へのポインタ。
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - state – オブジェクト
QkTranspilerStageStateへのポインタへのポインタ。 正常に実行された場合(戻り値 0)、トランスペイラーによって作成された状態オブジェクトへのポインタがこのポインタに書き込まれます。 - エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。
qk_transpile_stage_routing
QkExitCode qk_transpile_stage_routing(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState *state, char **error)
トランスパイラのプリセットルーティングステージを回路上で実行する
Qiskit トランスパイラは、量子回路コンパイラであり、与えられた入力回路をQPUの制約に適合するよう書き換え、実行のために回路を最適化する。 この関数はプリセットパスマネージャの第3段階であるルーティングを実行し、回路内のすべての命令をターゲットがサポートする形式に変換する。 詳細はルーティング段階を参照してください。
この関数は、QiskitのC APIを使用して構築された回路でのみ使用してください。 このトランスパイラは、C経由で公開された機能のみを使用して回路に関する仮定を行います。 Python とCの混合環境では、通常 Python 経由でトランスパイラを呼び出す方が適切です。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
、 target、または layoutがそれぞれ有効な、NULLでないポインタでない場合 dag、 QkTarget動作は QkDag未定義である QkTranspileLayout 。 options 有効なポインタ a でなければならない。 QkTranspileOptions``NULL error 有効なポインタへの char ポインタでなければならない。 NULL
パラメーター
- dag – トランスパイラを実行する回路へのポインタ。
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - state – レイアウトを含むオブジェクト
QkTranspilerStageStateへのポインタへのポインタ。 通常、この関数qk_transpile_stage_layoutを実行する前に を実行する必要があり、それによって初期レイアウトが設定された オブジェクトがQkTranspilerStageState提供されます。 その関数の出力状態を、この関数の入力として使いたいのです。 レイアウトオブジェクトがない場合(例:独自のレイアウト処理を実行した場合)。 を実行qk_transpile_layout_generate_from_mappingすると、現在の状態におけるDAGに対して、単純なレイアウト(回路内の仮想量子ビット0がターゲットの物理量子ビット0にマッピングされ、1→1、2→2…となるもの)を生成できます。 これにより、独自のレイアウトを生成する場合、配線工程用のレイアウトオブジェクトを生成できるようになります。 - エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。
qk_transpile_stage_optimization
QkExitCode qk_transpile_stage_optimization(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error, QkTranspilerStageState *state)
トランスパイラのプリセット最適化ステージを回路上で実行する
Qiskit トランスパイラは、量子回路コンパイラであり、与えられた入力回路をQPUの制約に適合するよう書き換え、実行のために回路を最適化する。 この関数は、 プリセットパスマネージャの第4段階である最適化を実行します。これは、回路が物理回路に変換された後、与えられた目標に対して回路を最適化するものです。 詳細については最適化段階を参照してください。
この関数は、QiskitのC APIを使用して構築された回路でのみ使用してください。 このトランスパイラは、C経由で公開された機能のみを使用して回路に関する仮定を行います。 Python とCの混合環境では、通常 Python 経由でトランスパイラを呼び出す方が適切です。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
とがそれぞれ有効な、nullでないポインタでない QkDag``target 場合、またはポインタ QkTarget``dag でない場合、動作は未定義である。 options 有効なポインタ a でなければならない。 QkTranspileOptions``NULL error 有効なポインタへの char ポインタでなければならない。 NULL
パラメーター
- dag – トランスパイラを実行する回路へのポインタ。
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。 - state – レイアウトを含むオブジェクト
QkTranspilerStageStateへのポインタ。 通常、この関数qk_transpile_stage_layoutを実行する前に を実行する必要があります。これにより、初期レイアウトが設定された オブジェクトQkTranspileLayoutが得られます。その関数の出力レイアウトを取得し、これを本関数の入力として使用します。 レイアウトオブジェクトがない場合(例:独自のレイアウト処理を実行した場合)。 を実行qk_transpile_layout_generate_from_mappingすると、現在の状態におけるDAGに対して、単純なレイアウト(回路内の仮想量子ビット0がターゲットの物理量子ビット0にマッピングされ、1→1、2→2…となるもの)を生成できます。 これにより、独自のレイアウトを生成する場合、最適化段階用のレイアウトオブジェクトを生成できるようになります。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。
qk_transpile_stage_translation
QkExitCode qk_transpile_stage_translation(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error)
トランスパイラの前処理翻訳段階を回路上で実行する
Qiskit トランスパイラは、量子回路コンパイラであり、与えられた入力回路をQPUの制約に適合するよう書き換え、実行のために回路を最適化する。 この関数は、 プリセットパスマネージャの第4段階である翻訳を実行します。これは回路内のすべての命令を、対象がサポートする命令へ変換します。 詳細は翻訳段階を参照してください。
この関数は、QiskitのC APIを使用して構築された回路でのみ使用してください。 このトランスパイラは、C経由で公開された機能のみを使用して回路に関する仮定を行います。 Python とCの混合環境では、通常 Python 経由でトランスパイラを呼び出す方が適切です。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
とがそれぞれ有効な、null QkTarget でないポインタ QkDagでない target 場合 dag 、動作は未定義である。 options 有効なポインタ a でなければならない。 QkTranspileOptions``NULL error 有効なポインタへの char ポインタでなければならない。 NULL
パラメーター
- dag – トランスパイラを実行する回路へのポインタ。
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。
qk_transpile_stage_layout
QkExitCode qk_transpile_stage_layout(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)
回路上でトランスパイラのプリセットレイアウト段階を実行する
Qiskit トランスパイラは、量子回路コンパイラであり、与えられた入力回路をQPUの制約に適合するよう書き換え、実行のために回路を最適化する。 この関数は、 プリセットパスマネージャレイアウトの第2段階を実行します。この段階では、仮想量子ビットから物理量子ビットへの初期マッピングを選択し、明示的な補助量子ビットを含むように回路を拡張します。 詳細についてはレイアウト段階を参照してください。
この関数は、QiskitのC APIを使用して構築された回路でのみ使用してください。 このトランスパイラは、C経由で公開された機能のみを使用して回路に関する仮定を行います。 Python とCの混合環境では、通常 Python 経由でトランスパイラを呼び出す方が適切です。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
または targetが、それぞれ有効な dag 非ヌルポインタ QkTarget でない場合、またはが有効な QkDag非ヌルポインタでない場合、動作は未定義である。 また、が有効なアラインメントを持つ、へのポインタへのポインタ QkTranspileLayout 、または NULL へのポインタへのポインタでない layout 場合、動作は未定義となる。 options 有効なポインタ a でなければならない。 QkTranspileOptions``NULL error 有効なポインタへの char ポインタでなければならない。 NULL
パラメーター
- dag – トランスパイラを実行する回路へのポインタ。
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - state – オブジェクト
QkTranspilerStageStateへのポインタへのポインタ。 正常に実行された場合(戻り値 0)、トランスパイラによって作成されたレイアウトオブジェクトが、このポインタが指す状態オブジェクトに書き込まれます。 既存のステートやレイアウトオブジェクトが存在しない場合、これに対応する内部ポインタはnullになることがあります。 通常、runを実行する場合、その関数の出力状態qk_transpile_stage_initを取得し、そのレイアウトをこの関数の入力として使用します。 しかし、レイアウトがない場合、内部ポインタはnullとなり、レイアウト付きの新しいオブジェクトがQkTranspilerStageState割り当てられ、そのポインタがここでレイアウトの内部値として設定されます。 - エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。
qk_transpile
QkExitCode qk_transpile(const QkCircuit *qc, const QkTarget *target, const QkTranspileOptions *options, QkTranspileResult *result, char **error)
1つの回路をトランスパイルする。
Qiskitトランスパイラとは、与えられた入力回路をQPUの制約に合わせて書き換え、最適化して実行する量子回路コンパイラである。 この関数はQiskitのC APIを使って構築された回路にのみ使用されるべきである。 C言語で公開されている機能のみを使用して回路を仮定します。 Python とC言語が混在している環境では、通常、 Python を介してトランスパイラを呼び出す方がよいでしょう。
この関数は内部的にマルチスレッド化されており、デフォルトではオペレーティング・システムから報告されたCPU数と同じ数のスレッドを持つスレッド・プールを起動する。 これには、同時マルチスレッド機能を持つCPUの論理コアも含まれる。 スレッド数は RAYON_NUM_THREADS 環境変数で調整できる。 例えば、 RAYON_NUM_THREADS=4 を設定すると、スレッドプールは4スレッドに制限される。
安全
、 target、または resultがそれぞれ有効な、ヌルでないポインタ QkTranspileResult でない場合 circuit、 QkTarget動作は QkCircuit未定義である。 options 有効なポインタ a でなければならない。 QkTranspileOptions``NULL error 有効なポインタへの char ポインタでなければならない。 NULL
パラメーター
- qc - トランスパイラを実行する回路へのポインタ.
- target - 回路をコンパイルするターゲットへのポインタ.
- options - ユーザ・オプションを定義するオプション・オブジェクトへのポインタ。 これがNULLポインタの場合、デフォルト値が使用される。 デフォルト値の詳細については、
qk_transpile_default_optionsを参照のこと。 - result - トランスパイラ結果のメモリ位置へのポインタ。 実行に成功すると(リターン・コード0)、トランスパイラの出力がポインタに書き込まれる。 結果構造体のメンバは呼び出し元が所有しており、それぞれの free 関数を使用してメンバを解放する責任があります。
- エラー – エラー説明を含むヌル終端文字列へのポインタへのポインタ。 トランスパイラが失敗した場合、エラー説明を含む文字列へのポインタがこのポインタに書き込まれます。 そのポインタは.
qk_str_freeで解放する必要があります。 これはヌルポインタである可能性があり、その場合エラーは書き出されません。
戻り値
トランスパイラのリターンコード。 QkExitCode_Success は成功を意味し、それ以外の値はエラーを示す。