ゲート方式の量子コンピューターを模倣するソフトウェアの一つにGoogleが開発しているCirqがあります。CirqのバックエンドとしてNVIDIAが開発しているcuQuantumを使いたい場合、qsimというライブラリをインストールする必要があります。しかし、PyPIで公開されているqsimはGPUに対応していないため、ソースコードを自分の環境でコンパイルしなければなりません。この記事ではqsimのコンパイル時に自分が詰まった部分をまとめます。
※Docker containerとして提供されているcuQuantum Applianceを使えばこのような作業は必要ないと思います。
| OS | Ubuntu 22.04.4 LTS |
| CPU | AMD EPYC 7543 32-Core Processor |
| GPU | NVIDIA A100 80GB |
| nvcc | 12.4 (CUDA 12.4) |
| CMake | 3.27.2 |
| GCC | 11.4.0 |
| Python | 3.11.4 |
手順
- cuQuantumのインストール (pipやaptのほか、NVIDIA DevZoneからarchiveを持ってくることも可能です)
詳細はリンク先の公式ドキュメント参照 qsimのリポジトリをcloneするgit clone https://github.com/quantumlib/qsim.gitqsimをコンパイルするexport CUQUANTUM_ROOT=<path to cuquntum> && cd qsim && make .CUQUANTUM_ROOTを定義しない場合、backendとしてcuQuantumを使えなくなります。pythonのスクリプトを実行して初めてエラーが出るので注意。qsimcirqをインストールする
qsimディレクトリでpip install .
自分の場合はここでエラーが発生。
原因: 環境変数CUDAARCHSが未設定だったこと。CMakeのおそらくconfigurationが失敗していた。
対策:CUDAARCHSに適切な値を設定する。GPUのSM variationという数字を設定すれば良いです。GPUの世代と対応する数字はこのウェブサイトに書いてありました。- GPUが使えるかチェック
例えばpython -c "import qsimcirq; print(qsimcirq.qsim_gpu)"など
その他
pip install .でエラーが発生した場合、特にsubprocess内でエラーが発生したと言われた場合は、subprocessが実行したコマンドを自分で実行してみると詳細なエラー内容がわかります- cmake関連でエラーが発生している場合、
CMakeLists.txtを確認すると良い場合があります。例えば今回のように必要な環境変数が定義されていないなどのエラーを発見できます。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント