【详细】Ubuntu18.04安装更新显卡驱动、安装CUDA及cuDNN、CUDA版本切换

CUDA安装官方教程:官方教程
cuDNN安装官方教程:官方教程

在配置Pytorch环境的时候,想着尝试一下新版本的pytorch版本Stable(1.10.1)时,发现这个pytorch版本仅支持CUDA10.2和CUDA11.3,故我就得更新以下当前的CUDA版本,也就有了下面这篇文档教程,注:虚拟机无法安装CUDA
查看CUDA版本以及GPU驱动对应关系:NVIDIA
通过查上面的表可以知道,如果要使用CUDA11.3,需要将显卡驱动更新到>=465.19.01(Linux x86_64环境)
首先打开终端查看当前CUDA版本和GPU驱动版本输入如下命令

nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.94       Driver Version: 470.94       CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   30C    P8     6W /  N/A |    629MiB /  3911MiB |     30%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1549      G   /usr/lib/xorg/Xorg                244MiB |
|    0   N/A  N/A      1722      G   /usr/bin/gnome-shell               52MiB |
|    0   N/A  N/A      2329      G   /usr/lib/firefox/firefox          324MiB |
|    0   N/A  N/A      2467      G   /usr/lib/firefox/firefox            1MiB |
|    0   N/A  N/A      2862      G   /usr/lib/firefox/firefox            1MiB |
+-----------------------------------------------------------------------------+
Driver Version: 470.94  # 这个是显卡CPU驱动版本
CUDA Version: 11.4    # 这个是CUDA版本

这里是我已经更新好的界面,下面讲解具体的操作。下载的网卡驱动版本大于CUDA要求版本显卡驱动版本即可,不一定要一模一样

最推荐安全方法

如果你的台式机或者笔记本刚安装ubuntu系统可能要安装显卡驱动(图像分辨率很小,图标很大情况)首先要换源,如果还没有网卡驱动可以先安装则先安装网卡驱动下面操作需要联网(或者可以用手机通过USB线连接手机和电脑USB口进行共享手机热点网络)
一、点击左下角9个点进入软件列表找到软件和更新–>ubuntu软件–>下载自–>其他站点...–>mirrors.aliyun.com–>选择服务器(S) 然后退出更新源
二、上面更新源之后才能找到显卡驱动软件和更新–>ubuntu软件–>附加驱动–>使用NVIDIA driver metapackage 来自 nvidia-driver-xxx(专有)–>应用更改(A)–>关闭就开始下载显卡驱动,过程时间较长(20-30分钟)安装完后,电脑重启就可以了,重启之后屏幕分辨率正常(部分刚安装ubuntu用户有此现象)终端nvidia-smi命令可以查看显卡驱动版本了
选择适配的版本的显卡驱动版本,如果是服务器则选择带有server的显卡驱动,带有test的是还在测试不是很稳定尽力别用。

————————————————————————————————————————————————————————————————
上面的方法安装成功显卡驱动后就无需用下面手动安装显卡驱动了,直接跳到下面安装CUDA和cuDNN教程即可

1. 下载驱动

下载驱动官方地址:NVIDIA官方驱动下载地址

我的显卡环境是:笔记本的GTX1650,我的选择如下:
产品类型:GeForce
产品系列:GeForce GTX 16 Series(Notebooks)     #这里notebooks就是笔记本的意思
产品家族:GeForce GTX 1650
操作系统:Linux 64-bit
下载类型:生产分支生     #这里建议跟我一样,是长期稳定的,另一个则不是,详细点击后面的?查看
语言:English(US)

点击搜索可以看到

Version: 	470.94
Release Date: 	2021.12.13
Operating System: 	Linux 64-bit
Language: 	English (US)
File Size: 	259.65 MB 

点击DOWNLOAD下载,默认是下载到你的【下载/Downloads】文件夹里,如果你ubuntu系统的语言是中文这里建议你将下载下来的.run文件copy到hone目录下,因为后面安装的时候为imen就会关掉显示界面,到字符界面里,只能显示英文,中文会乱码,无法进入
现在我们已经下载好驱动,现在开始安装驱动

2.安装驱动

先安装NVIDIA显卡依赖,在终端依次执行如下命令:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install build-essential libc6:i386

Ubuntu 系统默认安装好是使用的一个开源的驱动:nouveau,我们要安装官方的驱动需要先禁用这个开源驱动,方法如下,依次执行:

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

执行完上面两条指令后,我们使用如下命令看看是否成功禁用了开源驱动:

cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf

如果和下面一样,表示成功了

blacklist nouveau
options nouveau modeset=0

这个时候我们需要先重启一下系统,重启吧(建议先收藏本文,重启后可较容易找回,或者在其他设备上查看,比如手机)
重启成功后打开终端,输入如下命令:sudo telinit 3(sudo telinit 5返回到图形界面)。然后按快捷键:CTRL+ALT+F1 进入字符界面,输入用户名和密码,然后登录系统,进入我们保存下载 NVIDIA 驱动的目录,默认是:Downloads/ 目录,cd Downloads/,当然如果系统语言是中文,你输入ls你会发现,中文无法显示并且无法进入,前面下载驱动时建议将.run放在home目录下
执行下面命令赋予执行权限和运行

sudo chmod +x NVIDIA-Linux-x86_64-470.57.02.run
sudo ./NVIDIA-Linux-x86_64-470.57.02.run

安装过程
下面通过左右键选择Yes或者No

The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。

Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。

问题大概是:Nvidia’s 32-bit compatibility libraries? 选择 No 继续。

Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续

如果安装失败了once again就好了。

reboot重启输入密码后,笔记本电脑自带屏幕无法动弹,鼠标不能动,外界显示器能显示或者按 Ctrl+Alt+F1能进入命令界面
这是因为显卡驱动兼容性不够好导致的
解决方法

sudo rm /etc/X11/xorg.conf

重启即可进入图形界面,重新输入nvidia-smi查看GPU驱动和CUDA是否更新。

———————————————————————————————————————————————————————————————————————————

安装CUDA

CUDA各种版本:官网
cuDNN各种版本:官网

在这里插入图片描述
复制下面Base Installer命令,首先复制wegt命令到你想存放该文件的文件夹下的终端上运行下载该runfile文件然后执行

sudo chmod +x cuda_11.3.1......run    # 使该文件能够可执行
sudo ./cuda_11.3.1_.....run     #启动运行该文件

选择continue
在这里插入图片描述输入accept
在这里插入图片描述
按enter键取消driver下载因为我们已经下载安装了显卡驱动,然后选择Install进行下载安装
在这里插入图片描述
输入sudo gedit ~/.bashrc打开,在最底下复制下面三句到.bashrc文件里面

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

然后终端里面输入

source ~/.bashrc      # 刷新.bashrc文件内容
nvcc -V    #查看当前CUDA版本,若提示未安装该工具,就安装一下

———————————————————————————————————————————————————————————————————————————

安装cuDNN

cuDNN旧版本地址:官网,中间需要注册一个nvidia账号登陆才能下载

选择符合自己cuda版本的,选cuDNN Library for Linux(x86_64)
下下载得到一个压缩包解压之后将里面的文件各自复制到目标文件夹下就可,可参考执行如下命令:

# 复制cudnn头文件
sudo cp cuda/include/* /usr/local/cuda-11.3/include/
# 复制cudnn的库
sudo cp cuda/lib64/* /usr/local/cuda-11.3/lib64/
# 添加可执行权限
sudo chmod +x /usr/local/cuda-11.3/include/cudnn.h
sudo chmod +x /usr/local/cuda-11.3/lib64/libcudnn*

————————————————————————————————————————————————————————————————————————

切换CUDA版本

我们使用的cuda是/usr/local/cuda这个软连接,所以我们更换这个删除旧cuda这个文件夹,然后新建一个别的版本cuda软连接到我们使用的cuda这个软连接文件夹即可。

sudo rm -rf /usr/local/cuda   #删除旧cuda软连接
sudo ln -s /usr/local/cuda-11.7 /usr/local/cuda   #新建新的cuda版本软连接