ubuntu下安装多版本cuda及版本切换教程

1 下载runfile安装文件

  首先,从官网下载所需版本的cuda安装包,下载链接。选择对应版本后,会跳转到该版本的配置信息页面。比如我是ubuntu20.04系统,已经安装好了cuda10.0,但是现在还需要用到cuda9.0。那么,在选定版本后,配置信息如下图所示(由于Version选项中没有20.04,因此我们随便选一个即可,这里选的16.04,这一选项不会影响后面的安装),Installer Type选择为runfile(因为使用deb文件进行安装的话,可能会将已经安装的较新的显卡驱动给替换掉),选择好之后点击Base Installer后面的Download即可。
ubuntu下安装多版本cuda及版本切换教程_第1张图片
  

2 安装cuda

  cuda的安装过程需要关闭图形界面,在tty3命令行界面进行操作,否则会报错。而tty3环境下是无法显示中文的(显示为实心棱形乱码),所以进入前请先确保我们上面下载的runfile文件存放的路径全是英文的,然后需要记住它的路径,后边安装需要进入该路径进行。
  按快捷键ctrl+alt+F6可以进入到tty3命令行界面。首先会让你输入ubuntu用户的账号和密码,依次输入即可。然后,进入到runfile所在的路径下,执行sudo sh xxxx.run --override,即可进行cuda安装程序。首先是一个协议阅读,一直按住enter键直到100%(有点慢),或者直接按q键退出阅读,然后会问你是否接受该协议,选择accept即可。接下来的选项是:

You are attempting to install on an unsupported configuration. Do you wish to continue?
(y)es/(n)o/(q)uit: y    #不用管,选y即可

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.00? 
(y)es/(n)o/(q)uit: n    #不安装显卡驱动,选n
 
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y    #安装工具包,y
 
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:    #cuda安装地址,一般直接默认路径回车即可
 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n    #这是问你是否需要创建链接到该cuda的软链接,如果你需要安装好后就使用这个版本的cuda,那就选y,否则选n即可,软链接可以等安装好之后再添加,这里选择n
 
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y    #安装样例,y
 
Enter CUDA Samples Location
 [ default is /root ]:    #样例安装地址默认即可

  然后就是安装的过程,挺快的。如果安装成功的话,输出的信息如下图所示:
ubuntu下安装多版本cuda及版本切换教程_第2张图片
  可以看到有一个WARNING,说是cuda安装不完全,没有安装驱动。因为我们之前安装cuda时候已经安装驱动了,所以这里并不需要再次安装驱动,不用管这个WARNING。
  为了验证是否已经成功安装上cuda了,我们可以进入cuda安装的路径(上面有确认过的,默认的是/usr/local),执行命令cd /usr/local进入该目录,然后执行ls。如果看到输出内容里面包含有cuda-9.0,那就表明我们安装成功了。确认好以后,我们返回图形界面,按住快捷键ctrl+alt+F7即可。

补充一点,如果ctrl+alt+F7无效的话,就按ctrl+alt+F2试试。

  

3 下载cudnn

  接下来需要安装cudnn,从官网选择对应的版本下载即可,这里需要你先进行登陆然后才能进入下载。这里我们选择对应于cuda9.0的cudnn7.6.5,选择cuDNN Library for Linux选项,如下图所示:
ubuntu下安装多版本cuda及版本切换教程_第3张图片
  下载后是一个压缩包,将其解压(解压的文件夹名称默认是cuda),然后在解压后的目录下打开一个终端,依次执行如下命令即可。

sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

  

4 设置环境变量

  在任一终端执行sudo gedit ~/.bashrc,打开环境变量配置文本。将里面所有与cuda有关的带版本号路径都改为无版本号的。比如我之前已经安装好了cuda10.0,然后当时配置环境变量时,有许多/usr/local/cuda-10.0/这样的路径,要做的就是把所有的-10.0都去掉。修改好之后,保存并关闭文件,然后在终端执行命令source ~/.bashrc使环境变量的修改生效。
  然后,要切换cuda版本的时候,直接建立对应的软链接即可,命令如下:

sudo rm -rf /usr/local/cuda    #删除之前创建的软链接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda    #创建链接到cuda9.0的软链接
nvcc --version    #查看当前cuda版本

  如果一切配置都是正确的,那么执行完ncvv --version这行命令后,应该可以看到如下输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

  可以看到,cuda版本已经成功更换成9.0了。而如果要更改回去,则只需要执行类似上面的命令即可(只需将9.0改为10.0,是不是超级方便):

sudo rm -rf /usr/local/cuda    #删除之前创建的软链接
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda    #创建链接到cuda9.0的软链接
nvcc --version    #查看当前cuda版本

  执行后,可以看到输出变成了:

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

  好了,大功告成!
  

5 可能遇到的报错及解决方法

  虽然执行nvcc --version命令可以看到cuda版本的切换,但是,如果此时你再执行nvidia-smi命令,想看一下当前GPU的信息和使用情况的话,你很可能会获得一个报错信息:

Failed to initialize NVML: Driver/library version mismatch

  意思是驱动版本不匹配。心想,这就奇了怪了,安装cuda时候选择了run文件就是为了避免安装时候驱动被修改,而且安装过程中的驱动选项也是选的no,这下可不好解释了。网上很多说法是这种问题应该重装系统驱动的,但是,千万别!搞不好你不仅新安装的cuda失败了,就连之前已经安装妥当的cuda也白搭进去了。俗话说的好,遇事不决,重启解决。重启一下系统就完事了,确实有效!重启后再次打开终端执行nvidia-smi,输出如下:
ubuntu下安装多版本cuda及版本切换教程_第4张图片
  可以看到右上角显示的cuda version是11.0,而我当前cuda版本实际上是9.0,我甚至根本就没安装过11.0的。需要注意的是,要看当前是什么cuda版本,使用nvcc --version看到的输出才是正确的,而nvidia-smi主要是用来查看GPU使用情况的,此外,它还能实时查看GPU使用情况。
  

6 查看已安装的cuda版本有哪些

  一般如果我们都是使用默认位置安装cuda的话,那么其安装路径都是/usr/local。如果要查看该目录下已经安装有哪些版本的cuda,可以通过在终端执行如下命令:

ls -l /usr/local | grep cuda

  比如我这里执行的输出为:

lrwxrwxrwx  1 root     root       20 1113 12:45 cuda -> /usr/local/cuda-10.0
drwxr-xr-x 19 root     root     4096 31  2021 cuda-10.0
drwxr-xr-x 17 root     root     4096 1113 12:11 cuda-8.0
drwxr-xr-x 18 root     root     4096 1027 21:10 cuda-9.0

  总共有四行输出,其中第一行表示当前建立了软链接的版本,是cuda10.0。然后,后边三行就是已经安装的cuda版本,我这里有三个,分别是8.0,9.0和10.0。这个命令的作用主要是,如果你忘了已经安装了哪些版本的cuda的时候,就可以直接通过命令查看到。
  
  
参考链接:
ubuntu 19.10安装Nvidia显卡驱动以及CUDA和cudnn
安装多版本 cuda ,多版本之间切换
Ubuntu16.04下安装多版本cuda和cudnn

你可能感兴趣的:(Ubuntu,环境管理,ubuntu,linux,运维)