Aby debugować kod CUDA i sprawdzić kompatybilność, muszę dowiedzieć się, jaka wersja sterownika nvidia dla zainstalowanego GPU. Znalazłem Jak zdobyć wersję CUDA? ale to mi tutaj nie pomaga.
Aby debugować kod CUDA i sprawdzić kompatybilność, muszę dowiedzieć się, jaka wersja sterownika nvidia dla zainstalowanego GPU. Znalazłem Jak zdobyć wersję CUDA? ale to mi tutaj nie pomaga.
Odpowiedzi:
Używanie nvidia-smi
powinno ci powiedzieć, że:
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
takiego:locate nvidia-smi
lspci
. Na przykład: stackoverflow.com/questions/10310250/…
W każdym systemie Linux ze sterownikiem NVIDIA zainstalowanym i załadowanym do jądra możesz wykonać:
cat /proc/driver/nvidia/version
aby uzyskać wersję aktualnie załadowanego modułu jądra NVIDIA, na przykład:
$ 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
to:Failed to initialize NVML: GPU access blocked by the operating system
Failed to initialize NVML: Driver/library version mismatch
z nvidia-smi
.
modinfo
Zrób sztuczkę.
root@nyx:/usr/src# modinfo nvidia|grep version:
version: 331.113
nvidia_XXX
zgodnie z główną serią sterowników, które zainstalowałem, a ponieważ modinfo
nie obsługuje symboli wieloznacznych ani częściowych dopasowań nazw, musiałem to zrobić, modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:
co zwróciło poprawną wersję głównego i pomocniczego sterownika.
modinfo
systemie Ubuntu 18.04 moja wersja ma --field
opcję wiersza poleceń. Więc można pominąć grep: modinfo nvidia --field version
. Ponadto w Ubuntu 16.04 to nie działa. Zawsze rozumiem ERROR: Module nvidia not found
.
[UWAGA: celowo nie usuwam odpowiedzi, więc ludzie widzą, jak tego nie robić]
Jeśli użyjesz:
me@over_there:~$ dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
260.19.06
otrzymasz wersję pakietu sterownika nVIDIA zainstalowaną poprzez mechanizm pakowania Twojej dystrybucji. Ale może to nie być wersja, która aktualnie działa jako część jądra.
Aby rozwinąć odpowiedź ccc, jeśli chcesz włączyć odpytywanie karty za pomocą skryptu, oto informacje na stronie Nvidia, jak to zrobić:
https://nvidia.custhelp.com/app/answers/detail/a_id/3751/~/useful-nvidia-smi-queries
Znalazłem też ten wątek, badając PowerShell. Oto przykładowe polecenie, które uruchamia narzędzie, aby uzyskać prawdziwą pamięć dostępną na GPU, aby rozpocząć.
# 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
Jeśli potrzebujesz uzyskać to w programie z Pythonem w systemie Linux, aby uzyskać powtarzalność:
with open('/proc/driver/nvidia/version') as f:
version = f.read().strip()
print(version)
daje:
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)