LoginSignup
8
6

More than 5 years have passed since last update.

ColaboratoryでGPUを使った量子回路のシミュレーション

Last updated at Posted at 2019-02-09

はじめに

今回は量子コンピュータそのものについてや,ゲート操作等の基本的な部分は書きません.
もし量子コンピュータ?ゲート?という方はこちらを参考になさってください.

量子コンピュータと量子ゲートと私
ゲート式量子コンピュータの基本知識

あと今回のコードはここにあります.実行したい場合はplaygroundモードで開いてください.(研究室の合宿用に簡単に作ったものなので,コードは汚いです...)

量子コンピューティングシミュレータ

最近ではQunasys社QulacsなどのGPUによる量子コンピューティングのシミュレーションツールなどがあります.そもそも量子コンピュータは,言い換えれば超並列処理が得意なコンピュータで,そのシミュレーションをGPUにやらせようというのは自然な流れかなって感じがします.そこで今回は,GoogleのColaboratoryを用いて簡単にシミュレーションをしてみたいと思います.

環境

Google Colaboratory(Googleのアカウントを持っていれば,誰でも無料で使用可能です)
また,今回はpythonでgpuが簡単に使えるCuPyと呼ばれるモジュールを使用していきます.

準備

  1. ファイルからPython3の新しいノートブックを選択し,新しいノートブックを作成
  2. ランタイムからランタイムのタイプを変更を選択し,ハードウェアアクセラレータGPUにする.  

実験

今回は2量子ビット,10量子ビットの回路で実験を行なっていきます.
まず初期状態を$\mid{0}\rangle^{\otimes{n}}$とします.

2量子ビットでの量子もつれ

回路図でいうとこんな感じ.(図はIBMQExperienceのComposer)

下が実行時間で上が最終的な状態です.
スクリーンショット 2019-02-09 20.59.16.png
CPU

スクリーンショット 2019-02-09 21.01.46.png

GPU
スクリーンショット 2019-02-09 21.02.25.png

あれ,GPUの方が遅いですね...
では10量子ビットではどうでしょうか?

10量子ビットでの量子フーリエ変換

回路図は大きくなってしまうので割愛します(colabのnotebookには,qiskitで出力したものがあります.)が,アダマールゲートと,ある回転角の制御ユニタリ
ゲートの連続で実装されます.(詳しくは量子フーリエ変換 (Quantum Fourier Transform) とは)

CPU
スクリーンショット 2019-02-10 15.05.55.png

GPU
スクリーンショット 2019-02-10 15.06.23.png

なんと約20倍にも早くなりました!ではどのくらいであればGPUを使うと有利なのか,今回は量子フーリエ変換で検証してみます.  
以下のような結果になりました.

スクリーンショット 2019-02-09 21.30.45.png

これを見ると,8量子ビットを境に実行時間の差が大きく開いていっていることがわかります.

まとめ

今回はgpuを用いたcupyによる量子回路のシミュレーションを行なっていきました.前述の通り量子コンピュータは非常に並列処理が得意なコンピュータです.現在シミュレーションできる量子ビットの数は約40~50程度とされていますが,もしかしたらこれがより大きくなっていくのかもしれません.

間違い等ありましたらご指摘いただけると幸いです!

参考

【秒速で無料GPUを使う】TensorFow(Keras)/PyTorch/Chainer環境構築 on Colaboratory
制御ゲートの作り方

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6