らんだむな記憶

blogというものを体験してみようか!的なー

Qiskit Aer を WSL2 上で GPU 対応ビルドする

基本的には WSL2 で cuQuantum (1) の通りにやる。公式の CONTRIBUTING.md も勿論踏まえる。

  • CUDA Toolkit は前の記事で導入したのでそのまま。
  • ~/.bashrc に以下を追加:
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

export CUQUANTUM_ROOT="/opt/nvidia/cuquantum"
export LD_LIBRARY_PATH=${CUQUANTUM_ROOT}/lib:${LD_LIBRARY_PATH}
wget https://developer.download.nvidia.com/compute/cuquantum/22.11.0/local_installers/cuquantum-local-repo-ubuntu2004-22.11.0_1.0-1_amd64.deb
sudo dpkg -i cuquantum-local-repo-ubuntu2004-22.11.0_1.0-1_amd64.deb
sudo cp /var/cuquantum-local-repo-ubuntu2004-22.11.0/cuquantum-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuquantum cuquantum-dev cuquantum-doc

最後のほうで

...
nsorMg.so.1 (libcutensorMg.so.1) in auto mode
Setting up cuquantum (22.11.0.13-1) ...
Setting up cuquantum-doc (22.11.0.13-1) ...
Setting up cuquantum-dev (22.11.0.13-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
/sbin/ldconfig.real: Can't link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

と出ていたのは少し気になる。Unable to use NVidia OptiX. libnvoptix.so.1 is missing かな?

  • Qiskit Aer ビルド用の準備としては以下くらいで。
sudo apt install -y cmake libopenblas-dev
pip install pybind11 pluginbase patch-ng node-semver bottle PyJWT fasteners distro colorama conan

こちらも

...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
/sbin/ldconfig.real: Can't link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

が。

  • Qiskit のインストールと Aer の GPU 対応ビルドとインストール:
pip install "qiskit[all]"
pip uninstall -y qiskit-aer
git clone -b 0.11.2 https://github.com/Qiskit/qiskit-aer/
cd qiskit-aer
python setup.py bdist_wheel -- -DAER_THRUST_BACKEND=CUDA -DCUSTATEVEC_ROOT=$CUQUANTUM_ROOT
pip install dist/qiskit_aer-0.11.2-cp**-cp**-linux_x86_64.whl 

Qiskit Aer のビルドは前半で暫く沈黙の時間があるので、ゆったりと構えて待たないとならない。更に Turbo Boost を無効化しているのでそこそこコンパイルは遅くなっている気はする。

大丈夫かな?と思ったが、ビルドは正常に終了してインストールもできた。25 量子ビットの回路の状態ベクトルシミュレータの実行が 1 秒くらいで終わってしまった。