0 背景
我们在用不同框架做深度学习时,难免会遇到需要不同版本的cuda和cudnn版本的情况,如果把原来版本的卸载掉重新安装新版本,则会影响其它框架的使用,最好的方法是在主机上安装多个版本的cuda和cudnn,需要用到哪种就切换到哪种,这样就免去了重复卸载安装的工作
关于tensorflow对应的cuda和cudnn版本,参考官网链接
1 查看当前版本
cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息
cat /usr/local/cuda/version.txt
但是如果安装了多个cuda,实际使用的可能不是/usr/local/cuda/下边的版本,这个时候需要使用nvcc -V指令来查看实际使用的cuda版本
同理,cudnn的信息在其头文件里
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
2 更换cuda版本
2.1 安装cuda
首先在官网下载自己所需的cuda版本,比如我们需要新安装10.1版本的cuda,在官网根据自己系统选择对应的文件
我这里选择ubuntu16.04的runfile文件,运行以下指令安装
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
sudo bash cuda_10.1.243_418.87.00_linux.run
wget速度慢时,可以直接用浏览器打开那个链接下载
运行bash后,弹出选项设置,首先接受(accept)协议,然后进入options/driver options选项,勾选Do not install any of the OpenGL-related driver files,选完之后回退到主界面,选择Install,即可在/usr/local下生成cuda-10.1文件夹
2.2 版本切换
2.2.1方法一
如果只修改自己用户的CUDA版本,则只需要修改环境变量即可,打开~/.bashrc文件,找到cuda的环境变量
export PATH="$PATH:/usr/local/cuda-8.0/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda-8.0/lib64"
将cuda的路径改为自己需要的cuda版本路径即可
然后source一下使生效
source ~/.bashrc
这样的好处是只改了当前用户的cuda版本,其它用户还可以用他们需要的cuda版本,互不影响
2.2.2方法二
如果想要把服务器上多用户的CUDA版本都切换了,则删除原有链接,建立新的软链接即可,这样服务器上每个用户的版本都切换了
sudo rm -rf /usr/local/cuda #删除之前创建的软链接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda #创建新 cuda 的软链接,注意修改自己对应的版本
3 更换cudnn版本
cudnn版本与cuda版本是一一对应的,且只能有一种对应关系,因此,在确定cuda版本之后,再下载更换cudnn版本
3.1 下载解压
去官网下载需要的cudnn,注意要与自己的cuda版本以及平台相对应,我这里下载的是linux平台的对应cuda9.0的7.3.1版本的cudnn
下载完后,拷贝到自己服务器上,并解压,如果下载的是*.solitairetheme8格式的压缩文件,则采用如下方式进行解压(注意*号替换成自己的版本)
cp cudnn-*.solitairetheme8 cudnn-*.tgz
tar -xvf cudnn-*.tgz
3.2 删除原来版本
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
3.3 复制新版本
在解压后的文件夹中,找到include和lib64文件夹,将里边的文件拷贝到cuda目录中
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/
3.4 建立软连接
替换完成后,建立新版本cudnn的软链接,注意要与自己版本的链接一致
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
至此完成了cudnn的更换
来源:CSDN
作者:ZONG_XP
链接:https://blog.csdn.net/zong596568821xp/article/details/80880204