Как получить версию драйвера nvidia из командной строки?

97

Для отладки кода CUDA и проверки совместимости мне нужно узнать, какую версию драйвера nvidia для графического процессора я установил. Нашел Как получить версию cuda? но здесь мне это не помогает.

Framester
источник

Ответы:

140

Использование 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                                                 |
+-----------------------------------------------------------------------------+
Брендан Вуд
источник
2
В моей системе centos 6.4 это дает мне ошибку как «-bash: nvidia-smi: command not found». В чем может быть проблема?
Шямкхадка 05
@Shyamkkhadka Вероятно, что-то не так с вашим PATH. Вы можете попытаться найти nvidia-smiтак:locate nvidia-smi
Брендан Вуд
@BrendanWood, команда locate показывает пустой вывод. Я подозреваю, что у него тоже нет оборудования gpu. Потому что это HPC. И я получаю к нему доступ удаленно, с помощью ssh.
Шямкхадка
@Shyamkkhadka Да, наверное, так. У HPC обычно нет графических процессоров, если они не должны быть кластером графических процессоров. Вы можете проверить доступное оборудование с помощью lspci. Например: stackoverflow.com/questions/10310250/…
Брендан Вуд
@BrendanWood, как указано в вашей ссылке, когда я сделал "lspci | grep VGA". Он показывает вывод как «lspci | grep VGA 01: 03.0 VGA-совместимый контроллер: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)». Так что я думаю, что у него есть GPU.
Шямкхадка
101

В любой системе Linux с установленным драйвером NVIDIA и загруженным в ядро ​​вы можете выполнить:

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) 
талонмы
источник
5
Или, если у вас установлен Bumblebee (благодаря двойному графическому процессору NVIDIA Optimus), запустите вместо этого: «optirun cat / proc / driver / nvidia / version»
Шервин Эмами,
5
Это особенно полезно, когда вывод nvidia-smi:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
В моей системе centos 6.4 у меня нет каталога nvidia внутри / proc / driver. В чем может быть проблема? Из-за этого я не могу увидеть свою версию драйвера nvidia.
Шямкхадка 05
Также полезно, когда вы получаете результат Failed to initialize NVML: Driver/library version mismatchиз nvidia-smi.
Сетос II
14

modinfo делает свое дело.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Майкл
источник
3
В моей системе модуль был назван в nvidia_XXXсоответствии с основной серией драйверов, которые я установил, и, поскольку modinfoон не поддерживает подстановочные знаки или частичное совпадение имен, мне пришлось сделать это, чтобы modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:вернуть правильную основную и вспомогательную версию драйвера.
dragon788
1
В ubuntu 18.04 моя версия modinfoимеет параметр --fieldкомандной строки. Таким образом, вы можете пропустить grep : modinfo nvidia --field version. Кроме того, в ubuntu 16.04 это не работает. Я всегда получаю ERROR: Module nvidia not found.
cheshirekow
11

Версия для Windows:

компакт-диск \ Program Files \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
источник
7

[ПРИМЕЧАНИЕ: я не удаляю свой ответ специально, чтобы люди видели, как этого не делать]

Если вы используете:

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

вы получите версию пакета драйверов nVIDIA, установленную через механизм упаковки вашего дистрибутива. Но это может быть не та версия, которая сейчас работает как часть вашего ядра.

Framester
источник
11
Это не говорит вам, какая версия драйвера фактически установлена ​​и используется ядром. Используйте файловую систему proc, чтобы увидеть это .... Также это работает только в дистрибутивах в стиле debian.
Talonmies
2
@Framester, спасибо, что оставили это - это первое, что я сделал бы (и это неправильно!)
Стивен
@Framester: Вы полностью играли в систему! Я только что дал вам еще +1 за полезный неправильный ответ ... хитрый дьявол :-)
einpoklum
4

Чтобы расширить ответ 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
Джефф Блюменталь
источник
это не отвечает на вопрос о версии драйвера лучше, чем принятый ответ
JR Utily
1
@JRUtily, спасибо за улов. Я обновил код, чтобы показать, как получить версию драйвера. Ура!
Джефф Блюменталь
0

Если вам нужно получить это в программе с Python в системе Linux для воспроизводимости:

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) 
Мартин Тома
источник