洛胭 2025-11-10 20:05 采纳率: 98.9%
浏览 0
已采纳

如何查看NVIDIA驱动版本?

如何在Linux系统中查看NVIDIA驱动版本?常见方法包括使用`nvidia-smi`命令,该命令可显示GPU状态及驱动版本信息。若环境未安装NVIDIA驱动或命令不可用,可尝试`dpkg -l | grep nvidia-driver`(Ubuntu/Debian)或`rpm -qa | grep nvidia`(RHEL/CentOS)查询已安装的驱动包。此外,`cat /proc/driver/nvidia/version`也可直接读取内核模块版本。但部分情况下因驱动未正确加载或权限不足导致信息无法获取,需结合`dmesg | grep -i nvidia`排查加载问题。如何准确识别当前生效的驱动版本是运维和深度学习开发中的常见痛点。
  • 写回答

1条回答 默认 最新

  • 张牛顿 2025-11-10 20:17
    关注

    一、基础命令查看NVIDIA驱动版本

    在具备NVIDIA GPU的Linux系统中,最直接且常用的方法是使用nvidia-smi命令。该命令由NVIDIA驱动安装后提供,用于监控GPU状态并显示关键信息。

    $ nvidia-smi

    执行结果将输出GPU型号、温度、显存使用情况以及顶部明确标注的“Driver Version”字段。例如:

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 535.113.01   Driver Version: 535.113.01   CUDA Version: 12.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+

    此方法适用于驱动已正确安装且内核模块成功加载的环境。若命令未找到或报错,则需进入下一层排查。

    二、通过包管理器查询已安装的驱动包

    nvidia-smi不可用时,可通过系统级包管理工具确认是否已安装NVIDIA驱动软件包。

    • Ubuntu/Debian系统:
    $ dpkg -l | grep nvidia-driver

    输出示例:

    ii  nvidia-driver-535          535.113.01-0ubuntu1       amd64        NVIDIA driver metapackage
    • RHEL/CentOS/Fedora系统:
    $ rpm -qa | grep nvidia

    可能返回:

    kmod-nvidia-535.113.01-1.el8.x86_64
    nvidia-driver-cuda-535.113.01-1.el8.x86_64

    注意:包管理器显示的是“已安装”的驱动版本,但不保证当前正在运行或已被内核加载。

    三、读取内核模块版本信息

    Linux系统中,NVIDIA驱动以内核模块(nvidia.ko)形式运行。可通过以下命令直接查看模块版本:

    $ cat /proc/driver/nvidia/version

    正常输出如下:

    NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.113.01  Wed Aug  9 21:50:47 UTC 2023
    GCC version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)

    该方式绕过用户态工具,直接访问内核空间数据,更具权威性。前提是nvidia模块必须已加载。

    四、验证内核模块加载状态与调试信息

    若上述方法均失败,应检查驱动模块是否被加载:

    $ lsmod | grep nvidia

    无输出表示模块未加载。此时可结合dmesg日志分析原因:

    $ dmesg | grep -i nvidia

    常见错误包括:

    错误类型可能原因
    Module not found驱动未安装或未编译适配当前内核
    NVRM: API mismatch用户态工具与内核模块版本不一致
    Failed to load moduleSecure Boot阻止签名不符模块加载
    GPU access denied权限不足或设备被占用

    解决此类问题常需重新安装驱动或禁用Secure Boot。

    五、综合判断当前生效驱动版本的流程图

    为系统化识别真实生效的驱动版本,建议遵循以下诊断流程:

    graph TD
        A[开始] --> B{nvidia-smi可用?}
        B -- 是 --> C[提取Driver Version]
        B -- 否 --> D{nvidia模块已加载?}
        D -- 是 --> E[cat /proc/driver/nvidia/version]
        D -- 否 --> F[dmesg | grep -i nvidia]
        F --> G[分析加载失败原因]
        G --> H[修复安装或配置]
        H --> I[重新加载模块]
        I --> C
        C --> J[输出最终生效版本]
        

    该流程确保从用户态到内核态逐层穿透,避免仅依赖单一命令导致误判。

    六、高级场景下的版本一致性校验

    在容器化或虚拟化环境中(如Docker + nvidia-container-toolkit),宿主机驱动版本与容器内感知版本可能存在差异。推荐使用:

    $ nvidia-smi --query-gpu=driver_version --format=csv

    实现脚本化采集,并与nvcc --version中的CUDA Toolkit版本做交叉比对。

    此外,可通过modinfo nvidia查看模块构建信息:

    filename:       /lib/modules/5.15.0-86-generic/updates/dkms/nvidia.ko
    version:        535.113.01
    alias:          pci:v000010DEd*sv*sd*bc03sc*i*

    结合数字签名、构建时间戳等元数据,增强版本可信度。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 11月11日
  • 创建了问题 11月10日