【发布时间】:2012-10-19 00:12:29
【问题描述】:
为了调试 CUDA 代码和检查兼容性,我需要找出我安装的 GPU 的 nvidia 驱动程序版本。我找到了How to get the cuda version?,但这对我没有帮助。
【问题讨论】:
为了调试 CUDA 代码和检查兼容性,我需要找出我安装的 GPU 的 nvidia 驱动程序版本。我找到了How to get the cuda version?,但这对我没有帮助。
【问题讨论】:
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
【讨论】:
为了扩展 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
【讨论】:
如果您需要在 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)
【讨论】:
Windows 版本:
cd \Program Files\NVIDIA Corporation\NVSMI
nvidia-smi
【讨论】:
[注意:我不是故意删除我的答案,所以人们知道如何不这样做]
如果你使用:
me@over_there:~$ dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
260.19.06
您将通过发行版的打包机制获得安装的 nVIDIA 驱动程序包版本。但这可能不是现在作为内核的一部分实际运行的版本。
【讨论】:
在任何安装了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)
【讨论】:
nvidia-smi的输出是:Failed to initialize NVML: GPU access blocked by the operating system时特别有用
nvidia-smi 获得输出Failed to initialize NVML: Driver/library version mismatch 时也很有用。
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:它返回正确的主要和次要驱动程序版本。
modinfo 版本有一个--field 命令行选项。所以你可以跳过 grep:modinfo nvidia --field version。此外,在 ubuntu 16.04 中,这似乎不起作用。我总是收到ERROR: Module nvidia not found。
sudo modinfo nvidia-current --field version
使用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 |
+-----------------------------------------------------------------------------+
【讨论】:
nvidia-smi:locate nvidia-smi
lspci 检查可用的硬件。例如:stackoverflow.com/questions/10310250/…