Linux之cudnn升级方法

在安装tensorrt的时候,要求cudnn版本为7.3.1,而我之前安装的版本是5.1.10,因此需要对cudnn进行升级,升级方法很简单,而且不会对现有安装环境造成破坏,升级完之后tensorflow还可以正常使用

1 查看cudnn版本

首先使用以下指令查看现有cudnn的版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

输出如下

#define CUDNN_MAJOR 5
#define CUDNN_MINOR 1
#define CUDNN_PATCHLEVEL 10
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

表明是5.1.10版本

8.0 以上的版本查看方法是:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出如下

$ cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 2
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#endif /* CUDNN_VERSION_H */

2 下载cudnn

根据cuda和系统环境,在官网下载对应版本,建议选择tgz压缩文件,不要下载Deb文件

Linux之cudnn升级方法_第1张图片

下载完后解压出一个名为cuda的文件夹,文件夹中有include和lib64两个文件夹 

3 删除旧版本

sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

4 安装新版本

cd进入刚才解压的cuda文件夹

sudo cp include/* /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/

5 建立软连接

cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.3.1
sudo ln -sf libcudnn.so.7.3.1 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so   
sudo ldconfig  

6 测试验证

输入第1步的指令,得到输出如下

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 3
#define CUDNN_PATCHLEVEL 1
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

表明升级成功!

========2021.6.21更新=========

在升级 cudnn 8.0 的时候,报错如下

$ sudo ldconfig
/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link

需要都建立一下软链接

$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
$ sudo ln -sf  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.2  /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8

你可能感兴趣的:(#,Linux)