Help us understand the problem. What is going on with this article?

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

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
CUDA 9.1とcuDNN 7.1をUbuntu 16.04LTSにインストールする
CUDA 10とcuDNNをUbuntu 18.04LTSにインストールする

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away