1 下载runfile安装文件
首先,从官网下载所需版本的cuda安装包,下载链接。选择对应版本后,会跳转到该版本的配置信息页面。比如我是ubuntu20.04系统,已经安装好了cuda10.0,但是现在还需要用到cuda9.0。那么,在选定版本后,配置信息如下图所示(由于Version选项中没有20.04,因此我们随便选一个即可,这里选的16.04,这一选项不会影响后面的安装),Installer Type选择为runfile(因为使用deb文件进行安装的话,可能会将已经安装的较新的显卡驱动给替换掉),选择好之后点击Base Installer后面的Download即可。
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 ]: #样例安装地址默认即可
然后就是安装的过程,挺快的。如果安装成功的话,输出的信息如下图所示:
可以看到有一个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选项,如下图所示:
下载后是一个压缩包,将其解压(解压的文件夹名称默认是cuda),然后在解压后的目录下打开一个终端,依次执行如下命令即可。
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64sudo 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 driverCopyright (c) 2005-2017 NVIDIA CorporationBuilt on Fri_Sep__1_21:08:03_CDT_2017Cuda 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 driverCopyright (c) 2005-2018 NVIDIA CorporationBuilt on Sat_Aug_25_21:08:01_CDT_2018Cuda 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
,输出如下:
可以看到右上角显示的cuda version是11.0,这里不是指当前版本,而是说你的GPU最高支持cuda11.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 11月 13 12:45 cuda -> /usr/local/cuda-10.0drwxr-xr-x 19 root root 4096 3月 1 2021 cuda-10.0drwxr-xr-x 17 root root 4096 11月 13 12:11 cuda-8.0drwxr-xr-x 18 root root 4096 10月 27 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