【问题标题】:How to get the nvidia driver version from the command line?如何从命令行获取 nvidia 驱动程序版本?
【发布时间】:2012-10-19 00:12:29
【问题描述】:

为了调试 CUDA 代码和检查兼容性,我需要找出我安装的 GPU 的 nvidia 驱动程序版本。我找到了How to get the cuda version?,但这对我没有帮助。

【问题讨论】:

    标签: linux cuda driver


    【解决方案1】:
    nvidia-smi --query-gpu=driver_version --format=csv,noheader --id=0
    

    将结果作为不需要进一步解析的字符串返回,例如:470.82.00

    如果 nvidia-smi 由于某种原因不可用,可以通过调用驱动程序 API 来获取信息。 可以使用 Python ctypes 库加载驱动程序库。

    对于 CUDA,请参阅: https://gist.github.com/f0k/63a664160d016a491b2cbea15913d549

    有关驱动程序信息,请参阅: https://github.com/mars-project/mars/blob/a50689cda4376d82a40b7aa9833f572299db7efd/mars/lib/nvutils.py

    【讨论】:

      【解决方案2】:

      为了扩展 ccc 的答案,如果您想将查询卡与脚本结合起来,这里是 Nvidia 网站上有关如何执行此操作的信息:

      https://nvidia.custhelp.com/app/answers/detail/a_id/3751/~/useful-nvidia-smi-queries

      另外,我发现这个线程正在研究 powershell。下面是一个示例命令,它运行该实用程序以获取 GPU 上的真正可用内存,以帮助您入门。

      # get gpu metrics
      $cmd = "& 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi' --query-gpu=name,utilization.memory,driver_version --format=csv"
      $gpuinfo = invoke-expression $cmd | ConvertFrom-CSV
      $gpuname = $gpuinfo.name
      $gpuutil = $gpuinfo.'utilization.memory [%]'.Split(' ')[0]
      $gpuDriver = $gpuinfo.driver_version
      

      【讨论】:

      • 这并不能比接受的答案更好地回答有关驱动程序版本的问题
      • @JRUtily,谢谢你的收获。我更新了代码以显示如何获取驱动程序版本。干杯!
      【解决方案3】:

      如果您需要在 Linux 系统上的 Python 程序中获取该程序以实现可重复性:

      with open('/proc/driver/nvidia/version') as f:
          version = f.read().strip()
      print(version)
      

      给予:

      NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.90  Tue Sep 19 19:17:35 PDT 2017
      GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 
      

      【讨论】:

        【解决方案4】:

        Windows 版本:

        cd \Program Files\NVIDIA Corporation\NVSMI

        nvidia-smi

        【讨论】:

        • 看来这已经不是问题了。
        【解决方案5】:

        [注意:我不是故意删除我的答案,所以人们知道如何不这样做]

        如果你使用:

        me@over_there:~$  dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
        260.19.06
        

        您将通过发行版的打包机制获得安装的 nVIDIA 驱动程序包版本。但这可能不是现在作为内核的一部分实际运行的版本。

        【讨论】:

        • 这并不能告诉您内核实际安装和使用的驱动程序版本。使用 proc 文件系统来查看....而且这只适用于 debian 风格的发行版。
        • @Framester 感谢您留下这个 - 这是我要做的第一件事(而且它错了!)
        • @Framester:你完全玩弄了系统!我刚刚就一个有用的错误答案给了你另一个 +1 ......你这个狡猾的魔鬼 :-)
        【解决方案6】:

        任何安装了NVIDIA驱动并加载到内核的linux系统上,你可以执行:

        cat /proc/driver/nvidia/version
        

        获取当前加载的NVIDIA内核模块的版本,例如:

        $ cat /proc/driver/nvidia/version 
        NVRM version: NVIDIA UNIX x86_64 Kernel Module  304.54  Sat Sep 29 00:05:49 PDT 2012
        GCC version:  gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
        

        【讨论】:

        • 或者如果您安装了 Bumblebee(由于 NVIDIA Optimus 双 GPU),则改为运行:“optirun cat /proc/driver/nvidia/version”
        • 这在nvidia-smi的输出是:Failed to initialize NVML: GPU access blocked by the operating system时特别有用
        • 在我的 centos 6.4 系统中,/proc/driver 中没有目录 nvidia。可能是什么问题?因此,我无法看到我的 nvidia 驱动程序版本。
        • 当您从nvidia-smi 获得输出Failed to initialize NVML: Driver/library version mismatch 时也很有用。
        【解决方案7】:

        modinfo 可以解决问题。

        root@nyx:/usr/src# modinfo nvidia|grep version:
        version:        331.113
        

        【讨论】:

        • 在我的系统上,模块被命名为nvidia_XXX,对应于我安装的主要驱动程序系列,由于modinfo不支持通配符或部分名称匹配,我不得不这样做modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:它返回正确的主要和次要驱动程序版本。
        • 在 ubuntu 18.04 我的modinfo 版本有一个--field 命令行选项。所以你可以跳过 grep:modinfo nvidia --field version。此外,在 ubuntu 16.04 中,这似乎不起作用。我总是收到ERROR: Module nvidia not found
        • modinfo 显示了与 /proc/driver/nvidia/version 文件不同的版本。我想它从模块文件中读取版本,而不是从实际使用的版本中读取。我刚刚安装了新的驱动程序,我仍然需要重新启动。
        • 对于 Ubuntu/Debian 你可以sudo modinfo nvidia-current --field version
        【解决方案8】:

        使用nvidia-smi 应该告诉你:

        bwood@mybox:~$ nvidia-smi 
        Mon Oct 29 12:30:02 2012       
        +------------------------------------------------------+                       
        | NVIDIA-SMI 3.295.41   Driver Version: 295.41         |                       
        |-------------------------------+----------------------+----------------------+
        | Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
        | Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
        |===============================+======================+======================|
        | 0.  GeForce GTX 580           | 0000:25:00.0  N/A    |       N/A        N/A |
        |  54%   70 C  N/A   N/A /  N/A |  25%  383MB / 1535MB |  N/A      Default    |
        |-------------------------------+----------------------+----------------------|
        | Compute processes:                                               GPU Memory |
        |  GPU  PID     Process name                                       Usage      |
        |=============================================================================|
        |  0.           Not Supported                                                 |
        +-----------------------------------------------------------------------------+
        

        【讨论】:

        • 在我的 centos 6.4 系统中,它给我的错误是“-bash: nvidia-smi: command not found”。可能是什么问题?
        • @Shyamkkhadka 您的 PATH 可能有问题。您可以尝试像这样找到nvidia-smilocate nvidia-smi
        • @BrendanWood,使用定位命令显示空白输出。我怀疑它是否也没有gpu硬件。因为它是高性能计算。我正在使用 ssh 从远程访问它。
        • @Shyamkkhadka 是的,可能就是这样。 HPC 通常没有 GPU,除非它们应该是 GPU 集群。您可以使用lspci 检查可用的硬件。例如:stackoverflow.com/questions/10310250/…
        • @BrendanWood,正如您的链接中所建议的,当我执行“lspci | grep VGA”时。它显示输出为“lspci | grep VGA 01:03.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] ES1000 (rev 02)”。所以我认为它有 GPU 硬件。
        猜你喜欢
        • 2017-01-09
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 2013-04-08
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多