Qamomileを外部ライブラリや量子プラットフォームと組み合わせて使うときのノートです。
タグで探す¶
このセクション: integration optimization variational
他のセクション: algorithm chemistry encoding error-correction finance machine-learning oracle-based primitive resource-estimation sample-based simulation tutorial usage
Braketネイティブ回路へトランスパイルし、ローカルまたはAWS上で実行します。
MaxCut QAOAをCUDA-Qへトランスパイルし、サンプリングと期待値計算を実行します。
OMMX Quantum Benchmarksから取得したLABSインスタンス上でQAOAを動かし、SCIPと比較します。
qBraid対応デバイスでQiskit回路を実行します。
Qiskitへトランスパイルし、ローカルシミュレータで実行し、Qiskitネイティブ回路機能を確認します。
QURI Partsへトランスパイルし、Qulacs状態ベクトルシミュレータで実行します。
HUGRで量子整数を測定する¶
hugr extraをインストールすると、HugrTranspilerで幅が0〜64ビットに確定したレジスタのqmc.measure(qmc.cast(register, qmc.QInt))を扱えます。QIntレジスタは、量子カーネルを直接呼び出す際の引数や戻り値にも使えます。HugrTranspiler().transpile(kernel, bindings=...)でrun()とsample()を備えたHugrExecutableを取得し、HugrExecutor(target="selene")でローカル実行します。HUGRグラフと入出力情報をCompiledProgramとして取得する場合は、compile()を使います。
測定はレジスタを消費してUIntを返します。ビット0が最下位ビットで、整数値はbit[i] * 2**iの総和です。スライスでは先頭の量子ビットがビット0になります。run()はPythonのintを返し、sample()は復元した整数の出現回数を集計します。対応するタプルや辞書の戻り値でも整数型を維持します。空のレジスタの値は0です。整数への復元にはHUGRグラフ内の整数演算を使い、Floatへの変換を介さずにビット63や2**64 - 1を含む64ビットすべてを保持します。
レジスタ幅を決める引数は、トランスパイル時のbindingsで指定してください。bindingsの指定前にプログラムをシリアライズすることもできます。未確定の幅と引数の対応は量子カーネルの直接呼び出しを通じて保持され、復元したプログラムのトランスパイル時に幅が確定します。