【tf.keras】Linux非rootユーザーインストールCUDAとcuDNN

3183 ワード

TensorFlow 2.0 for Linux使用時報エラー:(cuDNNバージョンが低い)
E tensorflow/stream_executor/cuda/cuda_dnn.cc:319] Loaded runtime CuDNN library: 7.4.1 but source was compiled with: 7.6.0.  CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.
...
tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]

解決策:cuDNnをアップグレードします.TF 2.0とCUDA 10.0、cuDNN 7.6.4は一致します.
rootユーザー
Linuxサーバのユーザーがroot権限を持っている場合は、元のcuDNNを直接削除し、新しいバージョンを再インストールします.既存のcuDNNを削除:
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

CuDNN解凍後のcudaフォルダに入り、新しいバージョンをインストールします.
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/

ソフト接続の確立:(7.6.4バージョンを例に)
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.6.4
sudo ln -sf libcudnn.so.7.6.4 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so   
sudo ldconfig

root以外のユーザー
root権限がなければ、CUDAとcuDNNを自分で再インストールする方法があります.
ユーザーディレクトリにCUDAをインストールする
公式サイトからhttps://developer.nvidia.com/cuda-10.0-download-archiveubuntuで使用しているcudaをダウンロードします.10.0.130_410.48_linux.run,インストール命令sh cuda_10.0.130_410.48_linux.run,その後:
#  q      . 
 
Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: no

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yes

#         
Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]: /home/wuliyttaotao/cuda-10.0

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y

#       ,  
Enter CUDA Samples Location
 [ default is /home/wuliyttaotao ]:    

構成cuDNN
CuDNNファイルをCUDAインストールディレクトリにコピーします:(cuDNNは~/cudaディレクトリに解凍しました.~/cuda-10.0は自分で設定したCUDAインストールディレクトリです.~は/home/wuliyttaotaoを表します)
cp ~/cuda/include/cudnn.h ~/cuda-10.0/include
cp ~/cuda/lib64/lib* ~/cuda-10.0/lib64

chmod a+r ~/cuda-10.0/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*

ソフト接続の確立:
cd ~/cuda-10.0/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v

ユーザー環境変数の設定~/.bashrcファイルを変更し、次の2行を追加します:(wuliyttaotaoを自分のユーザー名に変更します)
export PATH=/home/wuliyttaotao/cuda-10.0/bin${PATH:+:${PATH}}  
export LD_LIBRARY_PATH=/home/wuliyttaotao/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
~/.bashrcファイルを保存した後、source ~/.bashrcを有効にします.
References
Linuxのcudnnアップグレード方法--ZONG_XP非rootユーザーはlinuxの下で複数のバージョンのCUDAとcuDN(cuda 8、cuda 10.1など)をインストールします.