Linux之cuda、cudnn版本切换

别来无恙 提交于 2019-12-02 01:35:28

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的更换

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!