Loading

Pop!_OS 22.04(Ubuntu 22.04)安装Nvidia GPU 驱动、CUDA、cuDNN 以及Docker GPU支持(nvidia-docker2)

1 平台

  • OS:Pop!_OS 22.04 LTS
    • 本文所有输入输出都是在Pop!_OS 22.04 LTS上的。
    • Pop!_OS 22.04 LTS是一款基于Ubuntu 22.04 LTS的Linux发行版,由System76开发和维护。理论上本文也适用于Ubuntu 22.04,但是未经测试。
  • GPU:Nvidia Quadro M2000M

2 目标

  • 安装GPU驱动nvidia-driver-530
  • 安装CUDA 12.1
  • 安装cuDNN 8.9.1.23
  • 安装nvidia-docker2

3 步骤

3.1 驱动

1 更新apt软件源

sudo apt update

2 使用apt安装驱动

sudo apt install nvidia-driver-530

3 重启计算机


4 验证

在重启计算机后,执行以下命令

nvidia-smi

若有类似以下格式的输出,并且第二行Driver Version对应530版本,则可确认驱动安装成功

  • 需要注意的是,这里的CUDA Version表示驱动支持的CUDA版本,并不代表我们已安装该版本的CUDA

1685025095302.png

3.2 CUDA

1 CUDA Toolkit安装

执行以下指令

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

以上指令来自CUDA Toolkit 12.1 Downloads | NVIDIA Developer的target_os=Linux -- target_arch=x86_64 -- Distribution=Ubuntu -- target_version=22.04 -- target_type=deb_network 方式,如需详细查看其他方式可能需要完成注册并登录再点击链接


2 环境变量设置

在~/.bashrc文件末尾添加

  • 可先验证/usr/local/cuda-12.1文件夹是否存在后,再修改~/.bashrc,以免导致环境变量错误
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}

3 POWER9设置

3.1 验证NVIDIA Persistence 守护进程是否正在运行

NVIDIA Persistence 守护进程应该会自动启动,验证是否正在运行

systemctl status nvidia-persistenced
  • 若进程正在运行, Active状态应为active

    1685027551232.png

  • 若进程未自动启动,使用执行以下命令再验证

sudo systemctl enable nvidia-persistenced

3.2 禁用默认安装的 udev 规则

1 将POP!_OS 22.04 LTS的相应udev文件拷贝到/etc/udev/rules.d目录下

sudo cp /lib/udev/rules.d/40-vm-hotadd.rules /etc/udev/rules.d

2 在/etc/udev/rules.d/40-vm-hotadd.rules文件的类似以下格式对应的memory一行前加#注释掉该行

SUBSYSTEM=="memory", ACTION=="add", DEVPATH=="/devices/system/memory/memory[0-9]*", TEST=="state", ATTR{state}!="online", ATTR{state}="online
  • 一些 Linux 发行版中默认安装了 udev 规则,这些规则会导致热插拔内存在物理探测时自动联机。此行为会阻止 NVIDIA 软件使用非默认设置来让 NVIDIA 设备进行内存联机。必须禁用此 udev 规则,NVIDIA CUDA 驱动程序才能在 POWER9 系统上正常运行。
  • POP!_OS 22.04 LTS 默认安装的udev规则在 /lib/udev/rules.d/40-vm-hotadd.rules文件中,有类似如下格式
SUBSYSTEM=="memory", ACTION=="add", DEVPATH=="/devices/system/memory/memory[0-9]*", TEST=="state", ATTR{state}!="online", ATTR{state}="online"

4 重启计算机


5 验证

1 重启后nvcc命令应可用

执行

nvcc -V

若CUDA安装成功,应有类似如下输出

1685029118400.png


2 (可选,但强烈推荐)编译并运行CUDA示例程序

1 克隆实例程序库

git clone https://github.com/NVIDIA/cuda-samples.git
  • CUDA 12.1 对应commit e612904184446c81e4d5beac8755081f9662cca0

2 在示例程序目录下编译程序

cd cuda-samples
make
  • 使用 TARGET_ARCH make选项指定编译程序的目标架构,不指定默认为 x86_64
    • make TARGET_ARCH=x86_64
    • make TARGET_ARCH=ppc64le
    • make TARGET_ARCH=armv7l
    • make TARGET_ARCH=aarch64
      3 执行示例程序

编译成功后示例程序应在cuda-samples文件夹下的bin/x86_64/linux/release目录中

在cuda-samples文件夹下执行

./bin/x86_64/linux/release/deviceQuery
./bin/x86_64/linux/release/bandwidthTest

若两个程序末尾都有 Result = PASS,则验证通过


3.3 cuDNN

1 配置临时环境变量

直接在终端执行

export OS=ubuntu2204
export cudnn_version=8.9.1.23
export cuda_version=cuda12.1
  • 这里OS表示当前的系统,Pop!_OS 22.04 LTS 是基于Ubuntu 22.04 LTS的这里设置为ubuntu2204,官方文档表示可选debian11, ubuntu1804, ubuntu2004, o或 ubuntu2204;cudnn_version表示想要安装的cuDNN版本,官方文档表示可以是8.9.1.*,这里选择了8.9.1.23;cuda_version表示我们的CUDA版本,官方文档表示只能设置为cude12.1或cuda11.8

2 添加apt库

执行以下命令添加apt库

wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin 

sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update

3 安装cuDNN 和cuDNN 示例程序

sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-samples=${cudnn_version}-1+${cuda_version}

4 验证

0 可能缺少libfreeimage3 libfreeimage-dev库,执行

sudo apt install libfreeimage3 libfreeimage-dev

1 拷贝示例程序到用户文件夹,并编译

cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make

2 执行示例程序

在 $HOME/cudnn_samples_v8/mnistCUDNN文件夹下,执行

./mnistCUDNN

若输出程序末尾包含Test passed!,则验证成功

3.4 nvidia-docker2

安装nvidia-docker2的前提是你已经安装了docker

1 添加nvidia-docker2的GPG Keys

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

2 添加nvidia-docker2的apt库

创建/etc/apt/sources.list.d/nvidia-container-toolkit.list文件,并添加以下内容

deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/ubuntu22.04/$(ARCH) /

3 更新apt软件源

执行

sudo apt update

4 使用apt安装nvidia-docker2

sudo apt install nvidia-docker2

5 重启计算机


6 验证

重启后执行

docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu20.04 nvidia-smi

若有类似以下输出则验证成功,此输出与在host中执行 nvidia-smi类似

1685032430945.png

References

1 NVIDIA CUDA Installation Guide for Linux
2 cuDNN Installation Guide - NVIDIA Docs
3 How to Use the NVIDIA GPU in Docker Containers on Ubuntu 22.04 LTS (linuxhint.com)
4 CUDA Toolkit 12.1 Downloads | NVIDIA Developer

posted @ 2023-05-26 00:46  Tarsss  阅读(2541)  评论(0编辑  收藏  举报