はじめに
今回は量子コンピュータそのものについてや,ゲート操作等の基本的な部分は書きません.
もし量子コンピュータ?ゲート?という方はこちらを参考になさってください.
量子コンピュータと量子ゲートと私
ゲート式量子コンピュータの基本知識
あと今回のコードはここにあります.実行したい場合はplaygroundモードで開いてください.(研究室の合宿用に簡単に作ったものなので,コードは汚いです...)
量子コンピューティングシミュレータ
最近ではQunasys社のQulacsなどのGPUによる量子コンピューティングのシミュレーションツールなどがあります.そもそも量子コンピュータは,言い換えれば超並列処理が得意なコンピュータで,そのシミュレーションをGPUにやらせようというのは自然な流れかなって感じがします.そこで今回は,GoogleのColaboratoryを用いて簡単にシミュレーションをしてみたいと思います.
環境
Google Colaboratory(Googleのアカウントを持っていれば,誰でも無料で使用可能です)
また,今回はpythonでgpuが簡単に使えるCuPyと呼ばれるモジュールを使用していきます.
準備
-
ファイル
からPython3の新しいノートブック
を選択し,新しいノートブックを作成
-
ランタイム
からランタイムのタイプを変更
を選択し,ハードウェアアクセラレータ
をGPU
にする.
実験
今回は2量子ビット,10量子ビットの回路で実験を行なっていきます.
まず初期状態を$\mid{0}\rangle^{\otimes{n}}$とします.
2量子ビットでの量子もつれ
回路図でいうとこんな感じ.(図はIBMQExperienceのComposer)
下が実行時間で上が最終的な状態です.
CPU
あれ,GPUの方が遅いですね...
では10量子ビットではどうでしょうか?
10量子ビットでの量子フーリエ変換
回路図は大きくなってしまうので割愛します(colabのnotebookには,qiskitで出力したものがあります.)が,アダマールゲートと,ある回転角の制御ユニタリ
ゲートの連続で実装されます.(詳しくは量子フーリエ変換 (Quantum Fourier Transform) とは)
なんと約20倍にも早くなりました!ではどのくらいであればGPUを使うと有利なのか,今回は量子フーリエ変換で検証してみます.
以下のような結果になりました.
これを見ると,8量子ビットを境に実行時間の差が大きく開いていっていることがわかります.
まとめ
今回はgpuを用いたcupyによる量子回路のシミュレーションを行なっていきました.前述の通り量子コンピュータは非常に並列処理が得意なコンピュータです.現在シミュレーションできる量子ビットの数は約40~50程度とされていますが,もしかしたらこれがより大きくなっていくのかもしれません.
間違い等ありましたらご指摘いただけると幸いです!
参考
【秒速で無料GPUを使う】TensorFow(Keras)/PyTorch/Chainer環境構築 on Colaboratory
制御ゲートの作り方