[other] 给NVIDIA GPU安装最新CUDA和显卡驱动的方法
Tofloor
poster avatar
sleepytime
deepin
2024-04-25 18:27
Author

说明

cuda官方文档: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

理论上支持任何Linux版本,已用过 ubuntu server 和Deepin 20.9和Deepin V23 。

使用NVIDIA显卡跑模型,一般都需要安装CUDA环境。

安装CUDA 可以同时安装显卡驱动,不用单独安装NVIDIA显卡驱动。

下载前的准备工作

(1)找到自己nvidia显卡支持的最新驱动版本:https://www.nvidia.com/Download/index.aspx

image.png

特别的:如果是DataCenter/Tesla系列,这里会直接显示支持的所有cuda版本!

image.png

(2)找到最新的cuda update版本: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64

image.png

DeepinV23 beta3 ,我用的ubuntu22.04的runfile,看了debian的下载链接和ubuntu一样,估计是debian系通用。页面上选择完后就会得到下载地址,使用迅雷或者wget下载cuda文件。

https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run 

(3)如何确认自己的卡是否支持到最新的cuda版本,老卡可能需要cuda11.4版本:


根据cuda文件名称判断,例如 cuda_12.4.1_550.54.15_linux.run

cuda版本:12.4.1

driver版本:550.54.15

只要 cuda中的driver版本(550.54.15)<= 此显卡的最新驱动(550.76),就可以使用这个cuda版本。
无需下载驱动,下载cuda就行,cuda包含了驱动。

安装操作

(1)禁用nouveau

# 切换root权限
sudo -i

# 确定是nvidia卡
update-pciids
lspci | grep -i nvidia

# 禁用 Nouveau 驱动程序
nano /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

sudo update-initramfs -u

# 重启后验证,必需没有结果,才表示禁用成功。
reboot
lsmod | grep nouveau

(2)安装cuda

# 更新系统
sudo -i
apt update
apt dist-upgrade
apt autopurge
apt autoclean
apt install g++ freeglut3-dev build-essential libx11-dev \
    libxmu-dev libxi-dev libglu1-mesa-dev libfreeimage-dev libglfw3-dev
reboot

# ubuntu server系统没有lightdm服务!!!
# deepin系统有lightdm,必须临时禁用下。或者直接执行init 3
# (ctrl+alt+F1 ~ F6)切换其它tty操作也行。
sudo -i
systemctl stop lightdm.service

# 安装 cuda
bash cuda_12.x.x_5xx.xx.xx_linux.run

# 配置环境变量
nano /etc/profile
export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(3) 设置持久进程

sudo -i

# 手动运行持久进程的方式
/usr/bin/nvidia-persistenced --verbose

# 官方建议修改为适合你自己linux发行版本的开机自启方式。
# 我用的systemd的service,这2个文件自己随便写的,仅供参考,欢迎大家提供更规范和标准的方式。
nano /etc/systemd/system/nvidia-persistenced.timer

[Unit]
Description=Set NVIDIA sth on boot[Timer]
OnBootSec=5[Install]
WantedBy=timers.target

nano /etc/systemd/system/nvidia-persistenced.service

[Unit]
Description=nvidia-persistenced[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-persistenced --verbose

chmod 644 /etc/systemd/system/nvidia-persistenced.timer
chmod 644 /etc/systemd/system/nvidia-persistenced.service
systemctl daemon-reload
systemctl enable nvidia-persistenced.timer

执行官方文档中的验证脚本

执行后,如果没有结果,会自动创建设备节点,之后再次执行,就可以看到已有结果。

# 验证设备节点是否已正确创建
#!/bin/bash

/sbin/modprobe nvidia

if [ "$?" -eq 0 ]; then
  # Count the number of NVIDIA controllers found.
  NVDEVS=`lspci | grep -i NVIDIA`
  N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
  NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`

  N=`expr $N3D + $NVGA - 1`
  for i in `seq 0 $N`; do
    mknod -m 666 /dev/nvidia$i c 195 $i
  done

  mknod -m 666 /dev/nvidiactl c 195 255

else
  exit 1
fi

/sbin/modprobe nvidia-uvm

if [ "$?" -eq 0 ]; then
  # Find out the major device number used by the nvidia-uvm driver
  D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`

  mknod -m 666 /dev/nvidia-uvm c $D 0
else
  exit 1
fi

常用命令

# 查看显卡数量
nvidia-smi -L

image.png

# 查看显卡版本信息,显卡资源使用情况,温度等
nvidia-smi -l

image.png

Reply Favorite View the author
All Replies
deepin
2024-04-25 20:39
#1

先码住,万一以后有用tail

Reply View the author
乾豫恒益
deepin
2024-04-25 21:20
#2

先留个底,这东西,太复杂了,Nvidia的显卡,怕了,或许高端的会好一点吧。

Reply View the author
neko
Moderator
2024-04-25 22:26
#3

cuda直接用run包安装就完事了,不需要关闭图形界面,另外你最后那个恢复图像界面写错了把disable改成enable。

其实没必要禁用lightdm服务,最多安装的驱动的时候用stop临时关闭,或者直接执行init 3切换成字符界面(会自动关闭图形界面)安装。

Reply View the author
sleepytime
deepin
2024-04-26 16:00
#4
neko

cuda直接用run包安装就完事了,不需要关闭图形界面,另外你最后那个恢复图像界面写错了把disable改成enable。

其实没必要禁用lightdm服务,最多安装的驱动的时候用stop临时关闭,或者直接执行init 3切换成字符界面(会自动关闭图形界面)安装。

嗯嗯,改过了。

Reply View the author
蒙笛
deepin
2024-04-27 10:49
#5

收藏备用

Reply View the author
131******41
deepin
2024-04-30 14:38
#6

Nvidia 显卡收藏

Reply View the author