Ubuntu18.04にNVIDIAのドライバとCUDA tool kitを入れる
最終更新日 2019/08/19
GPU NVIDIA GeForce GTX1070
ドライバ nvidia-410.104, cuda10.0, cuDNN v7.4.2
使用OS ver Ubuntu18.04
Proxy あり
バージョンチェック
はじめに
バージョンチェック、超重要!
ひとつでも整合性をミスると動かない
バージョンの選び方
ここでCUDAとcuDNNとtensorflow-gpuのバージョンの対応を確認 とりあえず、安定してそうなCUDA10.0を入れよう
下記tensorflow_gpu-1.14.0を採用
Version Python version Compiler Build tools cuDNN CUDA
tensorflow_gpu-1.14.0 2.7, 3.3-3.7 GCC 4.8 Bazel 0.24.1 7.4 10.0
今回はMSI Geforce 1070 8G OC (Geforce 10series)を使うので、最新ドライバを検索する下記が表示される
あぁ、自分のGPUはこのあたりまで対応できるのね、と把握すればOK
code: result
Linux x64 (AMD64/EM64T) Display Driver
バージョン: 430.26
リリース日: 2019.6.10
オペレーティングシステム: Linux 64-bit
言語: Japanese
ファイルサイズ: 105.48 MB
ここでドライバのバージョンと中に入っているCUDAのバージョンの対応を確認 430は表にないが、10.1以降がありそうだとわかる(実際にいれたら10.2が入った)
CUDA10.0を使いたいなら、下記
CUDA Toolkit Linux x86_64 Driver Version Windows x86_64 Driver Version
CUDA 10.1 >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
ということで選定
入れるものとそのバージョン
Nvidia Driver : 410.48以上、418.39未満
CUDA : 10.0
cuDNN : 7.4
tensorflow_gpu : 1.14.0
nvidiaドライバのインストール
デバイスなどの確認
下記コマンドで接続されているグラフィックボードが認識されているか確認する
$ lspci | grep -i nvidia
ドライバ等確認
nvidia関係のドライバが入っていないか確認
$ dpkg -l | grep nvidia
$ dpkg -l | grep cuda
何も表示されなければOK。何か入っていれば、下記コマンドで削除する
$ sudo apt --purge remove nvidia-*
$ sudo apt --purge remove cuda-*
$ sudo apt autoremove
NVIDIA グラフィックドライバーのPPAを登録し、情報の更新を行う。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
必要なドライバーを確認する
$ ubuntu-drivers devices
code:result
vendor : NVIDIA Corporation
driver : nvidia-driver-390 - third-party free
driver : nvidia-driver-410 - third-party free
driver : nvidia-driver-430 - third-party free recommended
driver : nvidia-driver-415 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin
ドライバをインストール
$ sudo apt install nvidia-driver-410
再起動
$ reboot
GPUのサマリを表示
$ nvidia-smi
https://gyazo.com/2df21c9f20640ff71774faaac26a97d5
CUDAをインストール
バージョン確認
ここでCUDAとcuDNNとtensorflow-gpuのバージョンの対応を確認 Version Python version Compiler Build tools cuDNN CUDA
tensorflow_gpu-1.14.0 2.7, 3.3-3.7 GCC 4.8 Bazel 0.24.1 7.4 10.0
とりあえず、CUDA10.0を入れよう
CUDAの取得とインストール
deb(local)を選択した
deb(network)はadd-apt keyでproxyに引っかかるので...
Updateのパッチもあれば、落としておく
DL先へ移動
$ cd Downloads
debパッケージの実行
$ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
下記エラーがでたら、指示どおりkeyをインストールして再トラ
code: error
TThe public CUDA GPG key does not appear to be installed.
To install the key, run this command:
sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub
アップデートとインストール
$ sudo apt update
$ sudo apt install cuda-toolkit-10-0
パスの設定
CUDAのパスを.bashrcの最後に書き込む
$ echo -e "\n## CUDA and cuDNN paths" >> ~/.bashrc
$ echo 'export PATH=/usr/local/cuda-10.0/bin:${PATH}' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
下記のような文字列が.bashrcに書き込まれているはず
code: terminal
## CUDA and cuDNN paths
export PATH=/usr/local/cuda-10.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH}
CUDAパスを書き込んだ.bashrcを再度読み込む
$ source ~/.bashrc
動作確認
$ nvcc -V
下記のように表示されればOK
code: result
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
更新
$ sudo apt update
$ sudo apt upgrade
※注意
バージョンによっては、nvccとnvidia-smiでCUDAバージョンの表示が異なることがある
(nvccはCUDA:10.0、nvidia-smiだとCUDA10.1とか。)
これはランタイムとして入れたCUDAとドライバに付属するCUDAのAPIが異なるため参照 気にしなくても良いらしい -> 気にしないとだめでした。
cudnnをインストール
ダウンロード
アカウント作成が必要
対応するバージョンのcudnnを落とす(下記写真を参考)
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0をクリック
https://gyazo.com/edccff9de7bf8141e47e16ea455d8e90
「Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0」より、下記3つをダウンロード
cuDNN Runtime Library for Ubuntu18.04 (Deb)
cuDNN Developer Library for Ubuntu18.04 (Deb)
cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)
インストール
移動
$ cd ~/Downloads
インストール(必ずこの順番でインストールすること)
$ sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb
確認
$ dpkg -l | grep "cudnn"
下記のように表示されればOK
ii libcudnn7 7.4.2.24-1+cuda10.0 amd64 cuDNN runtime libraries
ii libcudnn7-dev 7.4.2.24-1+cuda10.0 amd64 cuDNN development libraries and headers
ii libcudnn7-doc 7.4.2.24-1+cuda10.0 amd64 cuDNN documents and samples
Ref