本文主要参考该文章。
1 安装显卡驱动
1.1 前期准备
根据显卡型号在Nvidia 官网下载相应的驱动程序,然后安装必备软件:
1 | ## 更新源 |
1.2 禁用默认驱动
在安装NVIDIA驱动前需要禁止系统自带的显卡驱动 nouveau:
1 | # 编辑blacklist.conf 文件 |
1.3 安装驱动
进入tty 模式,并关闭图形进程:
1 | sudo service gdm3 stop |
开始安装驱动:
1 | ## 赋予执行权限 |
成功安装之后,会进入图形界面,此时使用命令nvidia-smi 检查驱动是否安装成功,若出现下图界面,证明驱动安装成功。
1.4 显卡驱动失效问题记录
一次重启电脑后,发现Ubuntu提示某个文件发生错误,是否需要反馈给Ubuntu,本人当时没在意点了“否”,在后续操作过程中发现nvidia-smi命令报错,显示找不到显卡驱动:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
但使用nvcc -V 命令可以正常显示CUDA 版本。由于之前也遇到过类似驱动失效的问题,所以选择重装显卡驱动,按照之前的步骤检查nouveau、关闭图形界面、安装驱动……然后就一路报错了……
NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
网上找解决方案,这篇文章提到一个解决方案,使用dkms:
1 | ## 首先,查看显卡驱动版本 |
然后搜了一下dkms的作用,wikipedia 中介绍如下:
动态内核模块支持 (Dynamic Kernel Module Support,DKMS)是用来生成Linux的内核模块的一个框架,其源代码一般不在Linux内核源代码树。 当新的内核安装时,DKMS 支持的内核设备驱动程序 到时会自动重建。 DKMS 可以用在两个方向:如果一个新的内核版本安装,自动编译所有的模块,或安装新的模块(驱动程序)在现有的系统版本上,而不需要任何的手动编译或预编译软件包需要。例如,这使得新的显卡可以使用在旧的Linux系统上。
唔……很奇怪,我应该没有更新Ubuntu的内核,不晓得为什么会出现这个情况,先记录一下吧,当前本人的Ubuntu内核版本为:
Linux echo-dell 6.5.0-14-generic #14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
2 安装CUDA
2.1 下载与安装
可同时安装不同的CUDA 版本,根据不同环境需求选择使用不同版本,本处以CUDA-11.8为例进行安装说明。
在NVIDIA官网下载对应版本,推荐使用runfile (local) 进行安装:
根据官网给出的下载和安装命令执行即可:
1 | wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run |
2.2 环境变量配置
安装完成后,打开账户的配置文件,进行以下修改:
1 | ## CUDA ENV |
若出现下图界面,则证明CUDA 安装成功:
2.3 多版本切换
CUDA 安装位置的文件如下图所示:
根据所需版本,切换cuda 的软链接即可:
1 | sudo ln -snf /usr/local/cuda-11.8 /usr/local/cuda |
3 安装cuDNN
注:此处可参考NVIDIA官网教程进行安装。
3.1 前期准备与下载
首先安装依赖包:
1 | sudo apt-get install zlib1g |
然后在NVIDIA官网下载相应版本的安装包,注意,下载cuDNN 需要注册NVIDIA账号。选取合适的版本进行下载:
3.2 安装
解压并安装:
1 | sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.3.28_1.0-1_amd64.deb |
按照提示导入CUDA GPG key:
1 | sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.3.28/cudnn-local-*-keyring.gpg /usr/share/keyrings/ |
更新源并安装:
1 | sudo apt-get update |
3.3 测试
输入检查命令,出现下图证明安装初步成功。
1 | sudo dpkg -l | grep cudnn |
按照官网教程,进行代码测试:
1 | # 将cuDNN samples 拷贝至主目录 |
此时可能出现如下报错:
1 | fatal error: FreeImage.h: No such file or directory |
可安装相应包进行解决:
1 | sudo apt-get install libfreeimage3 libfreeimage-dev |
安装之后重新编译,并运行生成文件:
1 | # 重新编译 |
若出现如下结果,则证明cuDNN 安装成功: