由于做项目需要用到不同版本的 Tensorflow,因此 CUDA 版本也需做相应的切换。
首先明确 Tensorflow 与 CUDA 的版本对应关系,参考网友已整理好的表格:https://www.jianshu.com/p/464fefb5c5d8
亲测 Nvidia driver 418.56,CUDA 10 & cuDNN 7.5.0 和 CUDA 8 & cuDNN 6.0 安装成功。
STEP 1. 下载 CUDA 与 CUDNN 安装包
https://developer.nvidia.com/cuda-toolkit-archive
https://developer.nvidia.com/cudnn 注意与 CUDA 版本对应
建议最好将两个版本的 CUDA 与 cuDNN 存放路径整理如下,以方便区分
- cuda8
- cuda # 解压后的 cudnn 6.0
- cuda_8.0.61_375.26_linux.run
- cudnn-8.0-linux-x64-v6.0.tgz
- cuda10
- cuda # 解压后的 cudnn 7.5
- cuda_10.0.130_410.48_linux.run
- cudnn-10.0-linux-x64-v7.5.0.56.tgz
STEP 2. 安装 CUDA
CUDA 10 与 CUDA 8 安装顺序无差别,安装过程如大多数单一版本安装教程一致,在建立软链接时输入 y/n 均可,后面会解释原因。
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: # 建立软链接时,输入y(yes)表示启用当前安装的cuda版本,反之代表暂时不启用该版本。
STEP 3. 安装CUDNN
分别在 cuda8 与 cuda10 文件夹路径下执行以下命令,cuda-* 表示 cuda-8.0 和 cuda-10.0
sudo cp cuda/include/cudnn.h /usr/local/cuda-*/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-*/lib64/
sudo chmod a+r /usr/local/cuda-*/include/cudnn.h
sudo chmod a+r /usr/local/cuda-*/lib64/libcudnn*
STEP 4. 配置环境变量
修改~/.bashrc文件,sudo nano ~/.bashrc
在文件末尾添加环境变量,Tensorflow 官方安装历程要求:配置 PATH,LD_LIBRARY_PATH 和 CUDA_HOME 环境变量。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
STEP 5. CUDA 版本切换
在安装了多个 cuda 版本后,可以在 /usr/local/ 目录下查看自己安装的 cuda 版本。
其中,cuda 是一个软链接,它指向我们指定的 cuda 版本。注意上面在设置环境变量时,使用的是cuda,而不是cuda-10.0和cuda-8.0,这是为了方便切换 cuda 版本,而不用每次都去改环境变量的值。可以使用 stat 命令查看当前 cuda 软链接指向的哪个 cuda 版本,如下所示:
当我们想使用任一cuda版本时,只需要删除该 cuda 软链接,然后重新建立指向cuda版本的软链接即可。
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
或者 sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda
STEP 6. 查看 CUDA 相关版本
查看GPU版本(N卡)
lspci | grep -i nvidia
查看nvidia驱动版本
cat /proc/driver/nvidia/version
查看CUDA版本
cat /usr/local/cuda/version.txt
nvcc -V # nvidia 编译器版本
查看cuDNN版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2