web-dev-qa-db-fra.com

Différentes versions de CUDA montrées par nvcc et NVIDIA-smi

Je suis très confus par les différentes versions de CUDA illustrées en exécutant which nvcc et nvidia-smi.

J'ai les deux cuda9.2 et cuda10 installés sur mon Ubuntu 16.04. Maintenant, je règle le PATH pour qu'il pointe sur cuda9.2. Alors quand je cours:

 $ which nvcc
 /usr/local/cuda-9.2/bin/nvcc

Cependant, quand je cours

$ nvidia-smi
Wed Nov 21 19:41:32 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72       Driver Version: 410.72       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    379MiB /  6078MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1324      G   /usr/lib/xorg/Xorg                           225MiB |
|    0      2844      G   compiz                                       146MiB |
|    0     15550      G   /usr/lib/firefox/firefox                       1MiB |
|    0     19992      G   /usr/lib/firefox/firefox                       1MiB |
|    0     23605      G   /usr/lib/firefox/firefox                       1MiB |

Est-ce que j'utilise cuda9.2 comme le suggère which nvcc ou j'utilise cuda10 comme le suggère nvidia-smi?

I vu cette réponse mais il ne fournit pas de réponse directe à la confusion, il nous demande simplement de réinstaller le cudatoolkit, ce que j'ai déjà fait.

25
yuqli

CUDA a 2 API principales, le runtime et l’API du pilote. Les deux ont une version correspondante (par exemple 8.0, 9.0, etc.)

Le support nécessaire pour l’API du pilote (par exemple, libcuda.so sur linux) est installé par le programme d’installation du pilote GPU.

Le support nécessaire pour l’API d’exécution (par exemple, libcudart.so sous Linux et nvcc) est installé par le programme d’installation du toolkit CUDA (qui peut également contenir un programme d’installation de pilote GPU).

Dans tous les cas, la version de l'API de pilote (installée) peut ne pas toujours correspondre à la version de l'API d'exécution (installée), en particulier si vous installez un pilote GPU indépendamment de l'installation de CUDA (c'est-à-dire le CUDA Toolkit).

L'outil nvidia-smi est installé par le programme d'installation du pilote GPU et a généralement le pilote GPU en vue, et non rien installé par le programme d'installation du kit d'outils CUDA.

Récemment (quelque part entre la version de pilote 410.48 et 410.73 sur Linux), les pouvoirs en place chez NVIDIA ont décidé d'ajouter le rapport sur la version de l'API de pilote CUDA installée par le pilote, dans la sortie de nvidia-smi.

Cela n’a aucune connexion avec la version d’exécution CUDA installée.

nvcc, l'outil de pilote de compilateur CUDA installé avec la boîte à outils CUDA, signalera toujours la version d'exécution CUDA pour laquelle il a été créé. Il ne sait rien de la version du pilote installée, ni même si un pilote GPU est installé.

Par conséquent, à dessein, ces deux nombres ne correspondent pas nécessairement, car ils reflètent deux choses différentes.

46
Robert Crovella

nvcc se trouve dans le dossier bin CUDA. Vérifiez si le dossier bin CUDA a été ajouté à votre $PATH.

En particulier, assurez-vous d’avoir exécuté les actions CUDA post-installation (par exemple, à partir de ici ):

  1. Ajouter la corbeille CUDA à $PATH (c'est-à-dire ajouter la ligne suivante à votre ~/.bashrc)
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

PS Assurez-vous que les deux chemins ci-dessus, existent d'abord: /usr/local/cuda-10.1/bin et /usr/local/cuda-10.1/NsightCompute-2019.1 (le chemin de NsightCompute peut avoir une fin légèrement différente en fonction de la version de Nsight compute installée ...

  1. Mettez à jour $LD_LIBRARY_PATH (c'est-à-dire ajoutez la ligne suivante à votre ~/bashrc).
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Ensuite, nvcc et nvidia-smi (ou nvtop) signalent la même version de CUDA ...

1
Ismail Moghul