Google ColabなどGPU環境でblueqat + cuQuantum

blueqatSDK + cuQuantumの最新版の利用の仕方を書きます。

インストールはpypiでできます。

pip install -U blueqat cuquantum-python-cu11

cuquantumのインストールは最新版はcuquantum-python-cu11で行ってください。

実行方法はこれからこちらで開発を加速してサポートを増やしますが、

状態ベクトルが、

from blueqat import Circuit
Circuit(28).h[:].cx[0,1].cx[26,27].h[:].run(backend="cusv")

こんな感じでstatevecが出ます。

array([ 9.9999988e-01+0.j,  1.7457795e-08+0.j, -3.4352610e-10+0.j, ...,
        0.0000000e+00+0.j,  0.0000000e+00+0.j,  0.0000000e+00+0.j],
      dtype=complex64)

テンソルネットワークが、

Circuit(28).h[:].cx[0,1].cx[26,27].h[:].run(backend="cutn")

となっています。こちらは、

beta : only H, X, RX, RY, RZ, CX, RZZ are available
('0.26846976 GFLOPS',
 array([1.00000000e+00+0.j, 3.25176795e-17+0.j, 0.00000000e+00+0.j, ...,
        0.00000000e+00+0.j, 0.00000000e+00+0.j, 0.00000000e+00+0.j]))

こんなかんじです。今はすみません、まだ状態ベクトルにしか対応していません。4月の初旬を使って状態ベクトル、単一振幅、サンプル、ハミルトニアン期待値あたりを実装しようかなとも考えています。

正直状態ベクトルはQiskitやCirq。特にQiskitから今後サポートが出ると思うので、blueqatはどうしようか迷ってます。

-40量子ビットまではcuStateVec / blueqat numpy(statevecの要素の順番は直そうと思います)。それ以上はcuTensornet / blueqat quimbを利用するというのが現実的ですが。皆様のご要望と企業や研究者の要望を聞いて進めます。