Ubuntu 下多版本Cuda(9.0,10.0)和CuDnn安装以及切换,cuda,cudnn版本查询命令

Ubuntu16.04,cuda 9.0, cudnn 7.5.0(已有)

再安装cuda10.0,cudnn 7.6.4,后又将cudnn改为7.6.5

1、安装cuda10.0

(注意选择对应版本,点击下载,推荐使用 runfile,安装很简单,几条命令就行了)
在这里插入图片描述
CUDA Toolkit Download下载,我下载的是cuda_10.0.130_410.48_linux.run

cuda历史版本下载地址(https://developer.nvidia.com/cuda-toolkit-archive)
cudnn下载地址(https://developer.nvidia.com/rdp/cudnn-archive)
在这里插入图片描述进入Cuda10.0 安装

进入到放置cuda_10.0.130_410.48_linux.run 的目录,执行下面两条命令安装:

sudo chmod +x cuda_10.0.130_410.48_linux.run          # 为 cuda添加可执行权限
sudo ./cuda_10.0.130_410.48_linux.run                 # 安装

会遇到几个选项:

先按q退出说明,直接进入下一步(不然等很久)
Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n # 之前已经安装好了

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]: # 一般选择默认即可,也可以选择安装在其他目录,在需要用的时候指向该目录或者使用软连接 link 到 /usr/local/cuda。

/usr/local/cuda-10.0 is not writable.
Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y

Please enter your password: 
Do you want to install a symbolic link at /usr/local/cuda? # 是否将安装目录通过软连接的方式 link 到 /usr/local/cuda,yes or no 都可以,取决于你是否使用 /usr/local/cuda 为默认的 cuda 目录。
(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n
开始安装。。。。(很快)
```Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-10.0
Samples:  Not Selected
...............
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

安装结束。。。


可以在/usr/local/ 中可以找到以下文件夹:

cuda-9.0       # 之前安装的cuda-9.0
cuda-10.0     # 刚刚安装的cuda-10.0
cuda           # cuda-9.0 的软连

2、cuDNN 安装

cudnn download下载与Cuda相对应版本的cuDNN(需要注册)
我选择,cuDNN 7.6.4 10.0_20190923/cudnn-10.0-linux-x64-v7.6.4.38.tgz(注意和cuda对应)
下载完后解压,得到一个文件夹 cuda/
执行以下命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /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*

OK了
cudnn版本查询命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

3、cuda版本切换

实现多版本CUDA共存的第一步,就是要将先前添加到**.bashrc文件**里的环境变量路径全部指向cuda软链接,也就是环境变量的路径里所有cuda-x.0的名字都改成cuda,如下:
终端输入

gedit ~/.bashrc
保存关闭后,执行下面命令,立即生效
source ~/.bashrc   

打开 .bashrc开始编辑
注销原本的

#export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
#export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

添加

export CUDA_HOME=/usr/local/cuda
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

意思是路径全部指向cuda软链接,而不表明版本9.0 or 10.0,后面切换时,不用改路径了,只改软连接指向就可以了

到/usr/local/目录下打开终端

sudo rm -rf cuda             #删除之前生成的软链接(原本指向9.0)
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda  #生成新的软链接,指向10.0

切回去,同理

4、cudnn版本更改

第一步:官网下载cuda对应版本cudnn,解压出cuda文件夹

注意:当软连接cuda指向cuda10.0的时候,你对cuda操作和对cuda10.0操作是一样的,也就是下面的命令中cuda等价于cuda10.0,自己可以看一下
第二步:删除已有cudnn:

$ sudo rm -rf /usr/local/cuda/include/cudnn.h
$ sudo rm -rf /usr/local/cuda/lib64/libcudnn*

第三步:cd到解压的cuda文件夹下复制对应的文件到路径:(参考 2cudnn安装)

sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /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*

第四步:添加文件路径,注意根据自己的版本号添加,本文以cudnn 7.6.5为例,我的安装后lib64里面已经有连接了,就没有执行此步骤,有了也可以删除再添加,执行也没关系

$ sudo chmod +r libcudnn.so.7.6.5
$ sudo ln -sf libcudnn.so.7.6.5 libcudnn.so.7
$ sudo ln -sf libcudnn.so.7 libcudnn.so
$ sudo ldconfig

cudnn版本查询命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

5、最后

①可以使用stat命令查看当前cuda软链接指向的哪个cuda版本,如下所示

wjh@wjh:/usr/local$ stat cuda
  文件:'cuda' -> '/usr/local/cuda-9.0'
  大小:19        	块:0          IO 块:4096   符号链接
设备:10307h/66311d	Inode:5257040     硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-11-21 10:24:09.794419490 +0800
最近更改:2019-04-06 10:02:16.424052698 +0800
最近改动:2019-04-06 10:02:16.424052698 +0800
创建时间:-

②用

nvcc --version    or    nvcc -V    or   cat  /usr/local/cuda/version.txt

命令看下我们当前使用的是哪个版本

wjh@wjh:/usr/local$ nvcc -V     (我切换后的)
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

wjh@wjh:/usr/local$ cat  /usr/local/cuda/version.txt
CUDA Version 10.0.130

可以看到之前的cuda是指向的cuda9.0,切换后,再用nvcc --version 命令看下我当前使用的是10.0的

③使用下面命令可以查看本机nvidia驱动的版本 – 410.78

nvidia-smi    

or

cat /proc/driver/nvidia/version

在这里插入图片描述
在这里插入图片描述

⑤cudnn版本查询如下, 7.6.4

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述


版权声明:本文为weixin_43915860原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。