事前知識
CUDA環境を作るときには必要なものの組み合わせが重要になってくる。
例えばCuPyを動かす際に必要になるのは
- CuPy
- CUDA Toolkit(SDK, ツール群)
- CUDA
- Nvidia Driver
で、これらのソフトウェア間のバージョンの互換性があっていないといけない。
CuPy, cuDNN, cuBLASなどはCUDA Toolkitと、
CUDA ToolkitはCUDAと
CUDAはNvidia Driverとの互換性が重要になる。
Nvidia Driverのインストール
まずはNvidia Driverをインストールする。
これはGPUの種類によってある程度上のバージョンからしかインストールすることができない。
セキュアブートを切ってインストールする方法が一番簡単。
セキュアブートを切ってインストールするのはボチボチ大変、アップデートが怖い。
手順は今回は割愛。
確認
インストール後にnvidia-smi
コマンドでDriverのVersionを確認。
トラブルシュート
Failed to initialize NVML: Driver/library version mismatch
と出る場合とりあえず再起動してみる。再起動してダメならGPUとDriverの相性やその他の問題の可能性も。
正常にインストールできているとGPUの情報などが見られるコンソールが出てくるDriver Version: 450.51.06
がドライバのバージョン。
CUDA, CUDA Toolkitのインストール
Nvidiaドライバーがちゃんと動作していれば、最大の難関は突破したと言ってよい。
Dockerをつかって任意の環境を作ることが可能。
Python2で使えるバージョンのCuPyはCUDA 10.1までにしか対応していないので、現時点最新の11ではなく任意のバージョン、今回はv10.1をインストールしてみる。NvidiaのCUDA Toolkitのインストール手順を解説するページの説明に従ってCUDAをインストールするとCUDA, CUDA Toolkit, cuBLASなどのCUDAを使ったライブラリがいくつかインストールされる。
https://developer.nvidia.com/cuda-downloads?target_os=Linux
今回は最新バージョンをインストールしないのでLegacy Releasesを選ぶ。
任意の環境を選ぶとインストール手順が表示される。今回はUbuntu18.04を使用。
ポイント
最後のsudo apt-get -y install cuda
のみsudo apt install cuda-10-1
と明示的にバージョンを指定したパッケージをインストールしたほうが良い。
トラブルシュート
dpkg: アーカイブ /tmp/apt-dpkg-install-T6Cu3b/25-libcublas-dev_10.2.2.89-1_amd64.deb の処理中にエラーが発生しました (--unpack):
'/usr/include/nvblas.h' を上書きしようとしています。これはパッケージ nvidia-cuda-dev 9.1.85-3ubuntu1 にも存在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
別記事で環境構築に失敗するなどして、きれいにインストールができていない場合、別バージョンとバッティングすることがある。当該パッケージや、sudo apt uninstall cuda
, 当該バージョンをsudo apt uninstall cuda-9-1
などで削除してみる。バッティングが解消されればインストール可能。
確認
nvcc -V
でPATHが通っているCUDA Toolkitのバージョンを確認することができる。別記事で環境構築に失敗するなどして、きれいにインストールができていない場合、別のバージョンのCUDA Toolkitが表示されたりする。
トラブルシュート
Ubuntuの場合は/usr/localにインストールしたCUDAのディレクトリがある。
.bashrc
export PATH="/usr/local/cuda-10.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.1/lib:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/usr/local/cuda-10.1/include:$LIBRARY_PATH"
source ~/.bashrc
当該バージョンのインストールディレクトリを環境変数に追加するとちゃんと指定したCUDAバージョンを利用することができる。
CuPyのインストール
Python2ではCuPyの10.1までが利用できます。こちらも明示的にインストール。
pip install cupy-cuda101
正常に利用できない場合はライブラリが正常に読み込まれていない場合が多いので、前項を確認してみる。CuPyを自前でビルドしているなどで利用が省かれていなければCuPyを再インストールする必要はないはず。
これでCuPyが動作すると思われる。