为什么推荐使用deb方法呢,因为下面三点:
cuDNN所有的deb文件是指:Runtime Library,Developer Library和Code Samples的deb文件。
从上往下数,下载第4,5,6个文件。
使用如下语句依次安装:
sudo dpkg -i libcudnn8_8.0.3.33-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.3.33-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.3.33-1+cuda11.0_amd64.deb
输入如下命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果出现如下信息,说明cuDNN已正确识别。
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
这个方法对于cudnnv8来说已经没有意义了,因为在cudnn8里面cudnn.h已经没有CUDNN_MAJOR这个信息。当然,对于cudnnv7还是可以用的。
官方说法:To verify that cuDNN is installed and is running properly, compile the mnistCUDNN sample located in the /usr/src/cudnn_samples_v8 directory in the debian file.
0. Copy the cuDNN sample to a writable path.
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd ~/cudnn_samples_v8/mnistCUDNN
这个最好是进去再make,不然在文件外面操作可能有权限的问题。
2. Compile the mnistCUDNN sample.
编译文件。
sudo make clean
sudo make
3. Run the mnistCUDNN sample.
运行样例程序。
sudo ./mnistCUDNN
4. If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
如果成功运行,会显示下列信息:
Test passed!
至此,cuDNN已通过程序测试。恭喜你完成安装!
大家都会运行的两行代码是:
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
对于我用deb方法安装的人来说这是不够的。我的tensorflow程序还是读到了cudnn,显示的是cudnn7.4.1需要升级到cudnn7.6.0的bug。
如果你不知道到底删除干净没有,可以找找这个文件libcudnn.so.8(我现在卸载的是libcudnn.so.7)
所以说,还要把lib里面的cudnn文件删除了才行。
sudo rm -rf /usr/include/cudnn.h
sudo rm -rf /usr/lib/x86_64-linux-gnu/libcudnn*
删除干净再重新安装才是正道。
这个错误常发生在重启电脑后的ubuntu系统。虽然说是说CUDA找不到,但是你可以用如下代码验证:
nvcc -V
sudo nvidia-smi
验证的结果一般都是CUDA没问题NVIDIA驱动掉了。毕竟ubuntu是开源系统,发现系统驱动突然掉了如同家常便饭。
有两种解决方法: