##前提
このコードをGPUで回すためには,tensorflow-gpu 1.14が必要らしい.
tensorflow-gpuのバージョンによってCUDAやcuDNNのバージョンは限定される.
また,インストールするCUDAのバージョンによっては,Nvidiaドライバのバージョンが適さない場合もある.
tensorflowとCUDA・cuDNNの対応関係⇨こちら
CUDAとNvidiaドライバの対応関係⇨こちら
##開発環境
OS:Ubunutu18.04.5 LTS
GPU:GeForce RTX 2060
###これを入れたい
・tensorflow-gpu 1.14
⇩
・CUDA 10.0 & cuDNN 7.4.2
⇩
・Nvidiaドライバ 410.48以上
###再構築前の環境
・CUDA 10.0
・cuDNN 7.4.2
・Nvidiaドライバ 410.104
ドライバのバージョンが低くてGPUで回せなかった.
#①古いやつ全部消す
このページを参考にした.
以下をターミナルに打ち込む.
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*
sudo apt-get --purge remove cudnn-*
sudo apt-get --purge remove libnvidia-*
sudo apt-get --purge remove libcuda-*
sudo apt-get --purge remove libcudnn-*
sudo apt-get autoremove
dpkg -l | grep nvidia
dpkg -l | grep cuda
dpkg -l | grep cudnn
これで何も出力されなければOK.
###上のコマンド後に何か出力されてしまったときの対処法
rc cuda-cuda-...
︙
rc cuda-...
みたいなのが出力されてしまったときは以下のコマンド.
sudo aptitude purge cuda-cuda-... ・・・ cuda-...
sudo aptitude purge [ファイル名]
で消せるはず.
#②ドライバのインストール
初めてやる人は一通りこのページに沿ってやるほうが良いと思う.
##自分のケース
ドライバのインストール後,CUDA 10.0をインストールすると,なぜかドライバのバージョンが410.104に戻されてしまった.
よくわからないため別のページのやり方を参考に.
ここからはこのページを参考にした.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
ubuntu-drivers devices # インストールされているデバイスと利用可能なドライバの確認。
sudo ubuntu-drivers autoinstall
sudo reboot
今回は,autoinstallでnvidia-driver-465をインストールすることになった.
最新版,ちょっとコワい….
再起動後,nvidia-smi
でドライバがインストールされているか確認.
#③CUDA 10.0,cuDNN 7.4.2のインストール
sudo apt-get install -y --no-install-recommends cuda-10-0 libcudnn7 libcudnn7-dev
これやったらcuDNNの7.4.2以外のバージョンらしきものをインストールしてるように見えたけど大丈夫だろうか….
##PATHを通す
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
##最後に確認
nvidia-smi
nvcc -V
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
上からNvidiaドライバ,CUDA,cuDNNのバージョン確認.
最後にGPUを認識しているかを確認.(tensorflow-gpuをインストールした上で)
python3
>>>from tensorflow.python.client import device_lib
>>>device_lib.list_local_devices()
これでdevice_type:GPUを出力すればOK.(XLA_GPUではダメ)