Como obter a versão do driver da nvidia na linha de comando?

97

Para depurar o código CUDA e verificar as compatibilidades, preciso descobrir qual versão do driver da nvidia para a GPU eu instalei. Descobri como obter a versão cuda? mas isso não me ajuda aqui.

Framester
fonte

Respostas:

140

O uso nvidia-smideve dizer a você que:

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                                                 |
+-----------------------------------------------------------------------------+
Brendan Wood
fonte
2
No meu sistema centos 6.4, me dá um erro como "-bash: nvidia-smi: command not found". Qual pode ser o problema?
Shyamkkhadka
@Shyamkkhadka Provavelmente há algo errado com seu PATH. Você pode tentar encontrar nvidia-smio seguinte:locate nvidia-smi
Brendan Wood
@BrendanWood, com o comando locate mostra a saída em branco. Suspeito que também não tenha hardware GPU. Porque é HPC. E estou acessando de remoto, com ssh.
Shyamkkhadka
@Shyamkkhadka Sim, provavelmente é isso. HPC geralmente não tem GPUs, a menos que devam ser um cluster de GPU. Você pode verificar o hardware disponível com lspci. Por exemplo: stackoverflow.com/questions/10310250/…
Brendan Wood
@BrendanWood, Como sugerido em seu link, quando fiz "lspci | grep VGA". Ele mostra a saída como "lspci | grep VGA 01: 03.0 controlador compatível com VGA: Advanced Micro Devices, Inc. [AMD / ATI] ES1000 (rev 02)". Então acho que tem hardware de GPU.
Shyamkkhadka
101

Em qualquer sistema Linux com o driver NVIDIA instalado e carregado no kernel, você pode executar:

cat /proc/driver/nvidia/version

para obter a versão do módulo de kernel NVIDIA atualmente carregado, por exemplo:

$ 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) 
garras
fonte
5
Ou se você tiver o Bumblebee instalado (devido à GPU dupla NVIDIA Optimus), execute este: "optirun cat / proc / driver / nvidia / version"
Shervin Emami
5
Isso é especialmente útil quando a saída de nvidia-smié:Failed to initialize NVML: GPU access blocked by the operating system
DarioP
1
No meu sistema centos 6.4, não tenho o diretório nvidia dentro de / proc / driver. Qual pode ser o problema? Devido a isso, não consigo ver a versão do meu driver nvidia.
Shyamkkhadka
Também é útil quando você começa a saída Failed to initialize NVML: Driver/library version mismatchde nvidia-smi.
Sethos II
14

modinfo faz o truque.

root@nyx:/usr/src# modinfo nvidia|grep version:
version:        331.113
Michael
fonte
3
No meu sistema, o módulo foi nomeado de acordo nvidia_XXXcom a série principal do driver que eu instalei e, como modinfonão suporta curingas ou correspondências parciais de nome, tive que fazer isso, o modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:que retorna a versão principal e secundária correta do driver.
dragon788
1
No ubuntu 18.04, minha versão do modinfotem uma --fieldopção de linha de comando. Então, você pode pular o grep: modinfo nvidia --field version. Além disso, no ubuntu 16.04 isso não parece funcionar. Eu sempre consigo ERROR: Module nvidia not found.
cheshirekow de
11

Versão Windows:

cd \ Arquivos de programas \ NVIDIA Corporation \ NVSMI

nvidia-smi

ccc
fonte
7

[NOTA: não estou excluindo minha resposta de propósito, então as pessoas vêem como não fazer]

Se você usar:

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

você obterá a versão do pacote de driver da nVIDIA instalada por meio do mecanismo de empacotamento da distribuição. Mas esta pode não ser a versão que está realmente rodando como parte do seu kernel agora.

Framester
fonte
11
Isso não informa qual versão do driver está realmente instalada e em uso pelo kernel. Use o sistema de arquivos proc para ver isso .... Além disso, isso só funciona em distribuições estilo debian.
talonmies
2
@Framester obrigado por deixar isso de lado - essa é a primeira coisa que eu teria feito (e é errado!)
stephen
@Framester: Você manipulou totalmente o sistema! Acabei de lhe dar outro +1 em uma resposta errada útil ... seu diabo astuto :-)
einpoklum
4

Para expandir a resposta do ccc, se você quiser incorporar a consulta ao cartão com um script, aqui estão as informações no site da Nvidia sobre como fazer isso:

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

Além disso, encontrei este tópico pesquisando PowerShell. Aqui está um exemplo de comando que executa o utilitário para obter a memória real disponível na GPU para você começar.

# 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
Jeff Blumenthal
fonte
isso não responde à pergunta sobre a versão do driver melhor do que a resposta aceita
JR Utily
1
@JRUtilmente, obrigado pela captura. Atualizei o código para mostrar como obter a versão do driver. Felicidades!
Jeff Blumenthal
0

Se você precisar obter isso em um programa com Python em um sistema Linux para reprodutibilidade:

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

dá:

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) 
Martin Thoma
fonte
0

Você pode simplesmente usar o comando: nvidia-smi -L

Saída de amostra : GPU 0: GeForce GTX 1660 Ti com design Max-Q (UUID: GPU-64ff7c28-7905-a240-e063-91caf97ab792)

Uddhav Gautam
fonte