1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux之cuda cudnn安装及版本切换

Linux之cuda cudnn安装及版本切换

时间:2019-09-13 17:26:10

相关推荐

Linux之cuda cudnn安装及版本切换

0 背景

我们在用不同框架做深度学习时,难免会遇到需要不同版本的cuda和cudnn版本的情况,如果把原来版本的卸载掉重新安装新版本,则会影响其它框架的使用,最好的方法是在主机上安装多个版本的cuda和cudnn,需要用到哪种就切换到哪种,这样就免去了重复卸载安装的工作

关于tensorflow对应的cuda和cudnn版本,参考官网链接,注意在1.13以上版本的tensorflow,都需要用到CUDA10.0和cudnn7.4,本文就以cuda10.0和cudnn7.4的更新为例,不卸载原9.0版本的cuda

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

2.1.1 方法一

首先在官网下载自己所需的cuda版本,比如我们需要新安装10.0版本的cuda,在官网根据自己系统选择对应的文件

我这里选择ubuntu16.04的runfile文件,运行以下指令安装

sudo bash cuda_10.0.130_410.48_linux.run

如果运行bash时报错

“Not enough space on parition mounted at /”

则加一个临时目录,方法如下,将dir改成自己的目录就行

sudo bash cuda_10.0.130_410.48_linux.run -tmpdir=[dir]

运行bash后,弹出选项设置,首先接受(accept)协议,然后按照以下选项设置

Do you accept the previously read EULA?accept/decline/quit: acceptInstall NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?(y)es/(n)o/(q)uit: nInstall the CUDA 10.0 Toolkit?(y)es/(n)o/(q)uit: yEnter Toolkit Location[ default is /usr/local/cuda-10.0 ]: Do you want to install a symbolic link at /usr/local/cuda?(y)es/(n)o/(q)uit: nInstall the CUDA 10.0 Samples?(y)es/(n)o/(q)uit: nInstalling the CUDA Toolkit in /usr/local/cuda-10.0 ...

安装成功后,会显示summary信息

2.1.2 方法二

为了避免手动安装出现错误,可以使用deb的方式安装,如下(具体指令根据自己下载的版本有所区别)

注意:这种方法安装可能会自动安装显卡驱动,我们如果对显卡版本有要求的话,建议不用这种方式安装

2.1.3 测试方法

cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make./deviceQuery

如出现以下FAIL,则未重启电脑,重启后即会解决

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 803

-> system has unsupported display driver / cuda driver combination

Result = FAIL

如果出现PASS,则说明安装成功

2.2 版本切换

2.2.1方法一

如果只修改自己用户的CUDA版本,则只需要修改环境变量即可,打开~/.bashrc文件,找到cuda的环境变量

export PATH="$PATH:/usr/local/cuda-10.0/bin"export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64/"export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda-10.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-10.0 /usr/local/cuda #创建新 cuda 的软链接,注意修改自己对应的版本

可以使用 ls -l 查看软链接情况,带 -> 符号的表明是软链接

3 更换cudnn版本

cudnn版本与cuda版本是一一对应的,且只能有一种对应关系,因此,在确定cuda版本之后,再下载更换cudnn版本

3.1 下载解压

去官网下载需要的cudnn,注意要与自己的cuda版本以及平台相对应,我这里下载的是linux平台的对应cuda10.0的7.4.1版本的cudnn

下载完后,拷贝到自己服务器上,并解压,如果下载的是*.solitairetheme8格式的压缩文件,则采用如下方式进行解压(注意*号替换成自己的版本)

mv cudnn-*.solitairetheme8 cudnn-*.tgztar -xvf cudnn-*.tgz

3.2 删除原来版本

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

3.3 复制新版本

在解压后的文件夹中,找到include和lib64文件夹,将里边的文件拷贝到cuda目录中

sudo cp include/cudnn.h /usr/local/cuda-10.0/include/sudo cp lib64/lib* /usr/local/cuda-10.0/lib64/sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*cd /usr/local/cuda-10.0/targets/x86_64-linux/lib/sudo ln -sf libcudnn.so.7.4.1 libcudnn.so.7

3.4 测试方法

cp -r /usr/src/cudnn_samples_v7/ ~cd ~/cudnn_samples_v7/mnistCUDNN/make cleanmake -j8./mnistCUDNN

运行显示 Test passed 表示安装成功!

4 其它问题

如果更新完cuda和cudnn版本后,运行tensorflow等程序,报错如下

“CUDA driver version is insufficient for CUDA runtime version”

则是因为自己显卡驱动版本比较低,首先运行nvidia-smi查看自己显卡驱动

可以看到驱动版本是384.130,而cuda10.0对应的版本需要大于等于410.48,来源,可见需要更新显卡驱动

在英伟达官网下载自己显卡对应的驱动,然后安装更新驱动版本即可,具体安装方法可参考《[专业亲测]Ubuntu16.04安装Nvidia显卡驱动(cuda)--解决你的所有困惑》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。