Edited at

CUDA 8.0とcuDNN 6をUbuntu 16.04LTSにインストールする

More than 1 year has passed since last update.


CUDA 8.0のインストール

NVIDIAの公式ページからCUDA 8.0をダウンロードする。

Operating System: Linux, Architecture: x86_64, Distribution: Ubuntu, Version: 16.04, Installer Type: deb (network). ダウンロードしたフォルダで以下のコマンドを実行してCUDAをインストールする。メタパッケージのcuda-8-0をインストールすると、全てのCUDA ToolkitとDriverパッケージがインストールされる。(CUDA 9.0のインストール方法はこちら


terminal

sudo dpkg -i cuda-repo-ubuntu1604_8.0.*_amd64.deb

sudo apt update
sudo apt install cuda-8-0


パスの設定

以下のechoコマンドかテキストエディタでCUDAのパスを.bashrcのファイルの最後に書き込む。その設定をsourceコマンドで読み込む。


terminal

echo -e "\n## CUDA and cuDNN paths"  >> ~/.bashrc

echo 'export PATH=/usr/local/cuda-8.0/bin:${PATH}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
source ~/.bashrc # CUDAのパスが書き込まれた~/.bashrcを読み込む。


.bashrcに追加される文字列


## CUDA and cuDNN paths
export PATH=/usr/local/cuda-8.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}

CUDAのパスが通っているか確認。


terminal

echo $PATH             # 出力に"/usr/local/cuda-8.0/bin"が含まれているか?

echo $LD_LIBRARY_PATH # 出力に"/usr/local/cuda-8.0/lib64"が含まれているか?
which nvcc # 出力が"/usr/local/cuda-8.0/bin/nvcc"になっているか?
nvidia-smi # nvidiaのGPUの情報が表示されているか?


cuDNNのインストール


cuDNN 6のインストール

https://developer.nvidia.com/rdp/cudnn-download からcuDNN 6 for CUDA 8.0のdebパッケージをダウンロードする(アクセスするにはメンバー登録が必要)。具体的には以下の3個のdebパッケージをダウンロードする。


  • cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)

  • cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)

  • cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)

ダウンロードしたフォルダで以下のコマンドを実行して、cuDNNをインストールする。


terminal

# Install Runtime library

sudo dpkg -i libcudnn6_6.0*+cuda8.0_amd64.deb
# Install developer library
sudo dpkg -i libcudnn6-dev_6.0*+cuda8.0_amd64.deb
# Install code samples and user guide
sudo dpkg -i libcudnn6-doc_6.0*+cuda8.0_amd64.deb


cuDNN 5.1のインストールとアンインストール

cuDNN 6を使う場合はcuDNN 5.1は必要ない。このセクションのインストール方法はcuDNN 6が登場する以前に作られたもの。

https://developer.nvidia.com/rdp/cudnn-download からcuDNN 5.1 for CUDA 8.0をダウンロードする(アクセスするにはメンバー登録が必要)。 ダウンロードしたフォルダで以下のコマンドを実行して、cuDNNのライブラリをCUDAがインストールされているディレクトリにコピーする。シンボリックリンクがシンボリックリンクとしてコピーされるように cp には -a をつける必要がある。


terminal

tar xzvf cudnn-8.0-linux-x64-v5.1.tgz 

sudo cp -a cuda/lib64/* /usr/local/cuda-8.0/lib64/
sudo cp -a cuda/include/* /usr/local/cuda-8.0/include/
sudo ldconfig

cuDNN 6にアップデートする際にはcuDNN 5.1をアンインストールする必要がある。上記の方法でインストールした際には以下の方法でアンインストールできる。


terminal

cd /usr/local/cuda-8.0/lib64/

sudo rm libcudnn.so libcudnn.so.5 libcudnn.so.5.1.5 libcudnn_static.a
cd /usr/local/cuda-8.0/include/
sudo rm cudnn.h
sudo ldconfig


動作確認

CUDAのサンプルコードを実行して動作確認する。

サンプルコードをホームディレクトリにコピーするシェルスクリプト(cuda-install-samples-8.0.sh)は /usr/local/cuda-8.0/bin/ にあるので、CUDAのパスが通っていればそのファイル名を指定するだけで実行できる。


terminal

cuda-install-samples-8.0.sh ~ # ホームディレクトリにサンプルコードをコピー。

cd ~/NVIDIA_CUDA-8.0_Samples/
make
cd bin/x86_64/linux/release # サンプルの実行ファイルがあるディレクトリに移動。
./smokeParticles

smokeParticles.png


CUDA 8.0の更新

CUDAの新しいバージョンがリリースされた際、以下のような表示がでてアップグレードできなかった。


terminal

$ sudo apt upgrade 

Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
cuda cuda-8-0 cuda-drivers cuda-runtime-8-0
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.


これは、古いCUDA関連のパッケージが以前のCUDAパッケージに依存しているために自動でアップデート出来ないようだ。このような時は単純にアップグレードできなかったパッケージを指定してインストールすればいい。どうやらapt dist-upgradeは副作用が大きいっぽい。


terminal

sudo apt install cuda-8-0

sudo reboot


参考

http://qiita.com/yukoba/items/3692f1cb677b2383c983

http://ry0.github.io/blog/2015/08/12/ubuntu-nvidia-cuda-7.0/

http://askubuntu.com/questions/601/the-following-packages-have-been-kept-back-why-and-how-do-i-solve-it