首页/AI/大模型部署与运维速查/驱动与 CUDA 版本的关系
推理环境与 GPU50 条

驱动与 CUDA 版本的关系

两处版本号含义不同:nvidia-smi 显示的 CUDA Version 是「驱动支持的上限运行时版本」,nvcc --version 是「实际安装的工具箱版本」;工具箱版本不能超过驱动上限。

三个版本号,别混为一谈

装 CUDA 环境时的困惑大多来自三个版本号含义不同。nvidia-smi 顶部的 CUDA Version 是当前驱动支持的上限运行时版本,只是能力声明;nvcc --version 显示本机实际安装的工具箱版本;PyTorch 通过 torch.version.cuda 报告自己编译时链接的 CUDA 版本。三者关系决定了能不能跑:工具箱不能超过驱动上限,框架构建要与运行时兼容。

三处版本号

查看方式显示内容实际含义
nvidia-smiCUDA Version驱动支持的上限运行时版本,不代表已安装
nvcc --versionrelease 版本号本机已安装的工具箱版本
torch.version.cuda形如 12.4 的字符串PyTorch 构建时使用的 CUDA 版本
驱动版本号Driver Version与内核模块、容器工具链强相关的基础版本

判断规则

工具箱高于驱动上限不可用:运行时需要驱动提供对应能力,报驱动版本不足
工具箱低于驱动上限正常:驱动向后兼容较旧的运行时
容器内看到的版本来自镜像本身,与宿主机装了什么工具箱无关
升级顺序先升驱动、重启验证,再升级工具箱与框架构建

三步核对

三步核对
nvidia-smi | head -5                                   # 驱动版本与 CUDA 上限
nvcc --version                                         # 本机工具箱版本(未装会报找不到命令)
python -c "import torch; print(torch.version.cuda, torch.cuda.is_available())"   # 框架侧
# 容器场景在容器内再跑一遍,比较与宿主机的差异
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi | head -5

常见组合问题

  • 宿主机装了新工具箱但驱动没升:编译能过、运行时报驱动能力不足
  • 只升级了驱动忘记重启:旧内核模块仍在用,版本显示与预期不一致
  • 容器里按宿主机 nvcc 判断:容器内的工具箱由镜像决定,两边版本经常不同
  • 框架 wheel 与运行时不一致:导入阶段报找不到动态库,或在推理时崩
  • 多套 conda 环境各装一个工具箱:命令行走的是当前环境,切换环境后版本看起来变了
驱动只有一套,工具箱可以多套并存:conda 环境里各装一个工具箱版本是常见做法,避免为了一个项目动全局环境。
驱动升级会中断所有在用 GPU 的任务并需要重启:务必排在维护窗口,升级前记录原版本与内核版本,准备回退路径。

易错点

  • 把 nvidia-smi 的 CUDA Version 当成已安装版本:据此判断会得出错误结论,宿主机可能根本没装工具箱
  • 先升工具箱后升驱动:顺序反了,运行时报驱动能力不足,还要再回退重来
  • 在容器里按宿主机的版本排障:容器工具箱来自镜像,两边版本常不一致,混用会带偏方向
  • 升级驱动后不验证容器透传:宿主机正常但容器报找不到设备,问题出在工具链或运行时配置
  • 不做版本记录:出问题想回退时已经忘了原驱动与内核版本,只能凭印象试

数据来源与参考

  • NVIDIA CUDA 兼容性文档(docs.nvidia.com/cuda)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌