Ubuntu下Nvidia Driver、CUDA、cuDNN的安装与测试

安装准备工作

更新内核和软件(可选)

sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove --purge

更新完成后重启电脑

安装必要依赖

sudo apt update
sudo apt install build-essential

下载CUDA Toolkit

注意: 下载相应文件时需要版本号对应

CUDA Toolkit归档页面选择版本后会转跳到下载页面,选择对应下载类型

注意: 选择Installer Type时要选择runfile,不要为了方便选deb

file

图中最下方框出的:

  • cuda_11.8.x为CUDA版本号,一般只需保证前两个数据位相同
  • 520.x.x为Driver版本号,一般只需保证第一个数据位相同

在Ubuntu自带的Additional Driver(附加驱动)软件中查找对应于其中Driver的版本号,以上图为例为520

由于官网驱动可能会比Ubuntu更新更快,所以版本可能会比Ubuntu中的新。这时就需要对应Ubuntu中Driver的版本号在归档页面找到对应的CUDA Toolkit版本。如Ubuntu中最新的Driver是515,此时找到的对应CUDA Toolkit版本为11.7,runfile文件为cuda_11.7.1_515.65.01_linux.run

找到对应文件后下载即可,以上图为例

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

下载cuDNN

注意: 下载相应文件时需要版本号对应

cuDNN归档页面选择对应CUDA版本。

如之前我们选的是CUDA 11.8,此处可以选择CUDA 11.x的通用版(下方框出的)。如果之前选择的是其他版本,可以用通用版,也可以选择如10.2、11.5等与自己下载的CUDA版本相同的具体版本

file

注意: 此处选择的是deb格式的文件

如果选择的是传统Tar方法解压拷贝安装的话也可以运行。但由于其中不包括测试样例相关文件,无法在后续步骤验证cuDNN是否安装成功

file

Nvidia Driver

安装驱动

注意: 如果在开机之后执行过upgrade操作需要先重启电脑再进行安装

使用Ubuntu自带的Additional Driver(附加驱动)软件安装之前确认过版本的Driver即可。(打开APP->选择驱动->点击应用)

一般不选择Server版本的驱动

file

等待进度条跑完后,重启电脑。

检验驱动是否安装成功

重启后打开终端输入

nvidia-smi

如果出现GPU信息即为安装成功

file

CUDA Toolkit

本节参考NVidia官方CUDA Toolkit安装指南[1]

安装CUDA Toolkit

运行安装程序

在CUDA Toolkit下载位置打开终端,输入以下指令(文件名替换为自己下载的文件名)

注意: 以sudo运行

sudo sh cuda_11.7.1_515.65.01_linux.run

在交互界面中:

  1. 上下键移动光标,回车选择Continue
  2. 输入accept,回车
  3. 选择需要安装的模块后,移动光标到Install,回车安装
    注意: 由于之前我们已经安装过驱动,这里上下键移动光标到Driver处,按空格取消勾选
  4. 等待安装完成,出现相关信息

配置环境变量

在.bashrc中根据提示加入CUDA Toolkit相应环境变量

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

检查CUDA是否安装成功

打开一个新的终端输入

nvcc -V

如果出现相关CUDA版本信息即为安装成功

file

cuDNN

目前网络上关于cuDNN安装和验证的方法过时且有大量错误和重复现象,本文严格根据cudnn官方安装指南[2]中步骤进行操作,有需要也可自行查阅官方文档。

安装cuDNN

Deb文件的安装方法

注意: 此处以上面下载的cuDNN安装包为例,注意替换为自己的版本
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install libcudnn8 libcudnn8-dev libcudnn8-samples

Tar文件的安装方法

解压
注意: 此处以上面下载的cuDNN安装包为例,注意替换为自己的版本
tar -xvf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
拷贝相应文件并赋予权限
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

检查cuDNN是否安装成功

注意: 仅通过Deb文件安装可以使用此方法验证

安装freeimage库

sudo apt install libfreeimage3 libfreeimage-dev

拷贝测试文件到用户目录下

cp -r /usr/src/cudnn_samples_v8/ $HOME

进入测试目录并编译

cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make

运行并检验

./mnistCUDNN

如果有如下输出即为成功

Test passed!

额外配置(可选)

考虑到Ubuntu上NVidia的驱动是与内核相对应的,容易因为使用sudo apt upgrade或系统的自动更新给更新掉(通常会保留原来的内核,但启动时会默认使用最新内核)。

file

这种情况下就会出现由于内核更新导致的驱动不可用,具体表现为使用nvidia-smi无法查看到GPU信息。

为避免出现这种情况可以使用apt-mark hold来保持当前版本的内核,具体操作如下。

查看当前内核版本

uname -r

file

查看相关内核文件

最后一个参数为上面获取到的正在使用的内核版本5.15.0.52-generic

sudo dpkg --get-selections | grep linux | grep 5.15.0.52-generic

file

禁止自动更新

注意:需要根据上面返回的结果修改为自己的信息

sudo dpkg --get-selections | grep linux | grep 5.15.0.52-generic | xargs -n1 | grep linux | xargs sudo apt-mark hold

查看所有hold项目

sudo apt-mark showhold

解除hold (xxx替换为需要解除hold的项目名称)

sudo apt-mark unhold xxx

参考

  1. ^NVidia CUDA Toolkit Installation Guide
  2. ^NVidia cuDNN Installation Guide
版权声明:本作品采用CC BY 4.0 许可协议,转载请注明来源
上一篇
下一篇