最高ですね。
バレンプラトー — 論文サーベイと簡単な検証 by derwind
https://blueqat.com/derwind/30f1495c-3a96-473e-b88e-a6b6cb6b7200
こちらのブログ記事をご参照ください。さて、cuQuantumですが、NVIDIA社一押しの量子コンピュータシミュレータで、
量子コンピュータと同じ計算がGPUでできます。もちろんハイブリッドで利用したり代わりに利用したりと最近はHPCと量子のハイブリッドが整備され始めていますので、
その急先鋒のソフトウェアです。無料で利用できます。最近世界最高速を出していました。日本で開発されています。
NVIDIAの世界最速量子回路シミュレータ!日本の産総研ABCIスパコンで実行!
https://blueqat.com/yuichiro_minato2/6816e9bf-a86b-430c-a48c-a4bacaa1fcac
自分は単純にNVIDIAのcuQuantumのファンなので推進しています。
今回はGoogle Colabという無料のjupyter環境のpythonのバージョンが3.8に更新されたということで簡単にcuQuantumが使えるようになったのでそのご紹介です。
derwindさんがblueqatをフォークしてcuQuantum対応のゲートセットを書いているので、それを利用させてもらいました。
!python -V
Python 3.8.16
これはいける!最初に気を付けるのは、
1.ランタイムのタイプをGPUに変更。
です。今回はGPUを使いますが、デフォルトではGPUに設定されてないと思いますので、設定しましょう。
早速インストールしてみましょう。必要なのはcuquantum-pythonとblueqatのcuquantum対応バックエンドだけです。
!pip install cuquantum-python git+https://github.com/derwind/Blueqat.git@cuquantum-0.1
ここでインストールの内容を反映させるためにいったんランタイムの再起動をします。再起動されたら早速計算します。
from blueqat import Circuit
Circuit(25).h[:].x[:].run(backend="cusv")
array([0.00017263+0.j, 0.00017263+0.j, 0.00017263+0.j, ...,
0.00017263+0.j, 0.00017263+0.j, 0.00017263+0.j], dtype=complex64)
簡単ですね!計算は状態ベクトルシミュレータというものを使いましたので、今回の計算はすべて状態ベクトルで計算結果がでます。状態ベクトルはマシンのメモリ量で制限がかかりますので、GPUとCPUのメモリ量以上の計算や表示ができませんので、限界を見てみて計算をしてみてください。GPUをクラスタで増やすと40とか41量子ビットまで計算ができますが、Google Colabでは厳しいと思います。
28量子ビットくらいまで計算できました。
Circuit(28).h[:].x[:].run(backend="cusv")
今回は状態ベクトルcuStateVecを利用しました。もう一つcuTensorNetも入ってるので、そちらも次回紹介したいと思います。今回は以上です。