GPU驱动与CUDA安装指南

NVIDIA GPU 驱动与 CUDA 安装指南

说明

服务器部署深度学习 / 推理等 GPU 业务前,需要先安装 NVIDIA 驱动与 CUDA 工具包。本文覆盖:

  • 检查操作系统版本(以 Ubuntu 24.04 LTS 为例)
  • 检查 GPU 硬件型号
  • 安装(两种可选方法)
  • 卸载(两种安装方法的卸载流程一致)

两种安装方法:

  • 方法一(先装驱动,再装 CUDA):稳定可靠,驱动为 NVIDIA 认证长期支持版本;缺点是不能选最新 CUDA,只能选驱动适配的指定版本。可接受较低版本 CUDA 时选此方法。
  • 方法二(直接装 CUDA,自带驱动):CUDA 可选最新版,功能最新;缺点是 CUDA 自带的驱动并非最新稳定版,属短期受限支持。必须追最新 CUDA 时选此方法。

注意

  • 因部署环境复杂,本文步骤目前只能人工处理,无法完全自动化。
  • 本文不覆盖联网安装方式 (如 apt、网络仓库、runfile 在线拉取等)。国内网络环境下联网安装失败率较高,故仅提供 runfile 离线安装方案。
  • 文中所有版本号、文件名均为真实示例,请以你实际下载的文件为准,下文仅作参考。

一、检查操作系统版本

本文以 Ubuntu 24.04 LTS(x86_64) 为例。请先确认系统版本与架构。

bash 复制代码
# 查看发行版信息
cat /etc/os-release

# 查看内核版本(后续安装内核头文件会用到)
uname -r

# 查看系统架构,需为 x86_64
uname -m

确认要点:

  • cat /etc/os-releaseVERSION= 应为 24.04 系列(如 24.04.1 LTS (Noble Numbat))。
  • uname -m 输出应为 x86_64。NVIDIA 官方驱动与 CUDA 仅支持 64 位 x86 架构。
  • uname -r 记下的内核版本(如 6.8.0-xx-generic)用于后续安装对应的 linux-headers

二、检查 GPU 硬件型号

安装驱动之前 即可确认显卡型号(此时 nvidia-smi 尚不可用)。

bash 复制代码
# 若 lspci 命令不存在,先安装:apt update && apt install -y pciutils
lspci -nn | grep -i nvidia

输出示例:

复制代码
2D:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Quadro RTX 5000] [10de:1eb1] (rev a1)

记下 [10de:xxxx] 中的设备 ID 与型号名称(如 Quadro RTX 5000),后续到 NVIDIA 官网查驱动与 CUDA 兼容性时会用到。

驱动安装完成、重启后,再用 nvidia-smi 做二次确认(见第三章「验证」小节)。

可选辅助脚本 :仓库外另有 tv/script/check/check_GPU.sh 可一键检测 GPU 信息并生成日志(如 gpu_detection_*.log)。该脚本不在本文范围内,按需自取,本文以命令行自检为准。


三、安装

3.1 准备

3.1.1 下载软件

① 下载 NVIDIA 驱动

浏览器访问 https://www.nvidia.cn/drivers/lookup/,输入第一章查到的显卡型号,选择适配当前操作系统的版本下载。

  • 追求长期稳定:优选官网推荐 / 认证版本。
  • 追求功能最新:点击「全部」,选最新版本。

可对照 CUDA 与驱动的兼容性矩阵选取搭配版本:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

② 下载 CUDA

浏览器访问(已预选 Ubuntu 24.04、runfile 本地安装):

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=runfile_local

复制页面底部命令参考里的文件地址下载,例如:

https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda_12.9.1_575.57.08_linux.run

如需其他版本,访问 CUDA 历史版本归档:https://developer.nvidia.com/cuda-toolkit-archive

方法一需要的是较低版本的 CUDA (由驱动决定,见 3.2 节 nvidia-smi 显示的 CUDA Version),请从归档页下载对应版本;方法二用最新版即可。

③ 下载驱动测试文件(cuda-samples)

用于验证 GPU 软硬件可用性。访问 https://github.com/NVIDIA/cuda-samples/tags,下载与所装 CUDA 版本一致的 tag 压缩包(如 cuda-samples-12.8.tar.gz)。

④ 上传并赋予执行权限

将下载的文件上传到服务器(示例目录 /opt/nvidia),并加执行权限:

bash 复制代码
root@testserver1:~# cd /opt/nvidia
root@testserver1:/opt/nvidia# chmod +x cuda_12.9.1_575.57.08_linux.run NVIDIA-Linux-x86_64-570.172.08.run
root@testserver1:/opt/nvidia# ls -lh
-rwxr-xr-x 1 root root 5.9G  cuda_12.9.1_575.57.08_linux.run
-rwxr-xr-x 1 root root 376M NVIDIA-Linux-x86_64-570.172.08.run
-rwxr-xr-x 1 root root 1.7K check_GPU.sh
3.1.2 安装基础软件

驱动 .run 安装时需要编译内核模块(DKMS),必须准备好编译工具与内核头文件:

bash 复制代码
apt update -y && apt install -y build-essential linux-headers-$(uname -r) cmake
  • build-essential:包含 gccg++make 等编译工具。
  • linux-headers-$(uname -r):与当前内核匹配的头文件,驱动编译模块必需。
  • cmake:后续编译 cuda-samples 验证程序需要。

3.2 方法一:先安装驱动,再安装 CUDA

适用于可接受较低版本 CUDA、追求驱动长期稳定的场景。

① 安装 NVIDIA 驱动

bash 复制代码
root@testserver1:/opt/nvidia# ./NVIDIA-Linux-x86_64-570.172.08.run

交互界面中其余选项均选择「确认」并回车。安装完成后重启操作系统

bash 复制代码
reboot

重启后确认驱动已加载:

bash 复制代码
root@testserver1:~# nvidia-smi
Fri Jul 18 03:32:14 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.172.08       Driver Version: 570.172.08   CUDA Version: 12.8            |
|-----------------------------------------+------------------------+----------------------|
| GPU  Name         Persistence-M | Bus-Id      Disp.A | Volatile Uncorr. ECC |
|=========================================+========================+======================|
|  0  Quadro RTX 5000         Off |  00000000:2D:00.0 Off |          Off          |
+-----------------------------------------+------------------------+----------------------+

关键 :记下 nvidia-smi 输出中的 CUDA Version: 12.8,它表示当前驱动支持的最高 CUDA 版本。下文 CUDA 必须选 12.8 系列(以你实际查询到的为准),不能选更高版本。

② 安装 CUDA(取消勾选驱动)

单独下载对应版本的 CUDA(如 cuda_12.8.1_570.124.06_linux.run),运行安装:

bash 复制代码
root@testserver1:/opt/nvidia# ./cuda_12.8.1_570.124.06_linux.run

由于驱动已安装,此处务必取消勾选 Driver

安装完成后摘要示例(注意 Driver: Not Selected):

复制代码
=========== Summary ===========
Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-12.8/

③ 配置环境变量

bash 复制代码
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

此方法偶发出现 CUDA 找不到驱动的异常(随机、非必现)。建议安装结束后重启操作系统规避。

3.3 方法二:直接安装 CUDA(自带驱动)

适用于必须追最新 CUDA、可接受驱动为短期受限支持的场景。

bash 复制代码
root@testserver1:/opt/nvidia# ./cuda_12.9.1_575.57.08_linux.run

默认配置如下,驱动与工具包均勾选:

注意 :此方法自带的 NVIDIA 驱动不是充分测试的稳定版,可在 NVIDIA 驱动下载页查询本机 GPU 适配的驱动清单确认。选此方法即需接受该驱动版本。

安装完成后摘要示例(Driver: Installed):

复制代码
=========== Summary ===========
Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-12.9/

配置环境变量

若曾经装过其他版本 CUDA,记得先在 ~/.bashrc 注释掉旧的路径配置,避免冲突:

bash 复制代码
echo 'export PATH=/usr/local/cuda-12.9/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

若条件允许,务必重启操作系统,规避偶发异常。

3.4 验证

两种安装方法完成后,验证步骤完全一致。

3.4.1 基础测试

驱动:

bash 复制代码
root@testserver1:~# nvidia-smi
Fri Jul 18 07:30:28 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.57.08        Driver Version: 575.57.08    CUDA Version: 12.9            |
+-----------------------------------------------------------------------------------------+
|  0  Quadro RTX 5000         Off |  00000000:2D:00.0 Off |          Off               |
+-----------------------------------------------------------------------------------------+

CUDA 编译器:

bash 复制代码
root@testserver1:~# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93

能正常显示驱动版本与 nvcc 版本即为基础测试通过。

3.4.2 增量测试(可选)

如需进一步验证 CUDA 计算能力,编译并运行官方示例 deviceQuery

bash 复制代码
# 解压与所装 CUDA 版本一致的 cuda-samples
tar -xzf cuda-samples-12.8.tar.gz
cd cuda-samples-12.8/Samples/1_Utilities/deviceQuery
cmake ./
make
./deviceQuery

输出末尾 Result = PASS 表示 GPU 驱动与硬件状态检测通过:

复制代码
./deviceQuery Starting...
 CUDA Device Query (Runtime API) version (CUDART static linking)
 Detected 1 CUDA Capable device(s)
 Device 0: "Quadro RTX 5000"
 CUDA Driver Version / Runtime Version      12.8 / 12.8
 ...
 Result = PASS

四、卸载

若软件版本过低或功能异常,可参考本方法卸载。无论使用方法一 还是方法二 安装,卸载流程都一致:先卸载 CUDA Toolkit,再卸载 NVIDIA Driver,最后一次性重启。

① 确认实际安装路径

bash 复制代码
ls /usr/local/ | grep cuda
# 示例输出:cuda-12.8  或  cuda-12.9(以实际为准)

② 卸载 CUDA Toolkit

将下方路径中的版本号替换为上一步查到的实际版本:

bash 复制代码
/usr/local/cuda-<实际版本>/bin/cuda-uninstaller

卸载结束可见提示:

复制代码
Successfully uninstalled

③ 卸载 NVIDIA Driver

bash 复制代码
/usr/bin/nvidia-uninstall

④ 重启生效

若 CUDA 与驱动都要卸载,请等两者全部卸载完成后再一起重启,不要分步重启。

bash 复制代码
reboot
相关推荐
喜壹LittlePrince1 天前
CUDA 入门第一课:从线程索引到向量加法与朴素矩阵乘法
cuda·hpc
xier_ran4 天前
【infra之路】GPU 执行与存储层次全景关系图
人工智能·深度学习·cuda
DogDaoDao7 天前
GR00T N1 论文深度拆解:英伟达给机器人装上了“快与慢“双系统大脑
机器人·大语言模型·nvidia·机器人模型·智能机器人·图像生成模型·gr00t
ServBay7 天前
NVIDIA NeMo Switchyard 与智能模型路由趋势下,如何统一管理多供应商 API 与协议转换
aigc·ai编程·nvidia
椒颜皮皮虾྅8 天前
【TensorRTtSharp v4.0】在 C# 中使用 TensorRT CSharp API v4.0 动态编译并运行 CUDA Kernel
android·开发语言·人工智能·深度学习·c#·cuda
Albart5758 天前
vLLM多卡部署终极踩坑:CUDA error worker进程异常退出 完整定位&生产根治方案
cuda·nccl·vllm·大模型部署·多卡推理·大模型踩坑
漂流瓶jz9 天前
一文读懂大模型生态:分类/参数/结构/训练/GPU/评测/排行/社区
人工智能·大模型·llm·openai·nvidia·deepseek·anthropic
帅气的小峰10 天前
pybind11与nanobind可以共存吗?如何迁移?
c++·python·cuda·推理引擎
(initial)13 天前
C-05. Kernel Fusion 代价边界:少写回 vs 寄存器压力与 occupancy
c语言·开发语言·cuda