最近在跑几个SLAM的框架, 因为有GUI所以就没用nvidia-docker,又回到了坑爹的环境工程时间,而且工作站其他需求也经常用到不同版本的CUDA, cuDNN,为了方便小伙伴们一起愉快地在工作站玩耍,记录一下如何便捷地切换不同版本的CUDA与cuDNN。
1. CUDA版本切换
首先下载不同版本的CUDA,显卡驱动那块我就省了,找到一个向下兼容的高版本驱动就可以,安装CUDA时就只需要安装CUDA Toolkit了,注意不要重复安装驱动
环境变量
在你对应终端的环境变量文件下加入一下内容,我的是传统的bash,~/.bashrc
,如果你是zsh或者其他玩意儿请自行修改:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
请注意目录是cuda,我们后面会用软连接的方式来切换版本,这里设置成连接目标就可以省的环境变量改来改去。
重启终端或直接执行source ~/.bashrc
更新环境变量
CUDA版本切换
不同版本的cuda安装后,在本地/uer/local
目录下,如我装了8.0和9.0,就会有两个目录cuda-8.0
, cuda-9.0
,我们通过软连接到自己想用的版本到 cuda
,就可以直接完成CUDA版本的修改,注意更改时先删除之前的软连接:
cd /usr/local/
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda #连接你自己要用的CUDA版本
2. cuDNN版本切换
去官网自己下不同版本的cuDNN,然后解压,为了方便替换工作我直接整合写了一个shell脚本,你可以和解压后的cudn文件夹放在同一级目录下,然后修改里面的cudnn动态库版本为你的具体版本,然后sudo bash install_cudnn.sh
#!/bin/bash
#!install_cudnn.sh
rm -rf /usr/local/cuda/include/cudnn.h
rm -rf /usr/local/cuda/lib64/libcudnn*
cd cuda
cp include/cudnn.h /usr/local/cuda/include/
cp lib64/lib* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64/
chmod +r libcudnn.so.5.1.10
ln -sf libcudnn.so.5.1.10 libcudnn.so.5
ln -sf libcudnn.so.5 libcudnn.so
ldconfig
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
即可完成替换
3. 附:Tensorflow, CUDA, cuDNN版本对应
https://www.tensorflow.org/install/source
Pytorch基本上从CUDA7-CUDA9均有支持,最新版目前也支持CUDA10,可以自行去官网查看