934 votes

Comment obtenir la version CUDA ?

Existe-t-il une commande rapide ou un script pour vérifier la version de CUDA installée ?

J'ai trouvé le manuel de la version 4.0 dans le répertoire d'installation mais je ne suis pas sûr qu'il s'agisse de la version réellement installée ou non.

4 votes

7 votes

Quel est le système d'exploitation visé par cette question ?

0 votes

Pensez-vous au runtime installé et supporté ou au SDK installé ?

1178voto

harrism Points 9770

Comme le mentionne Jared dans un commentaire, à partir de la ligne de commande :

nvcc --version

(ou /usr/local/cuda/bin/nvcc --version ) donne la version du compilateur CUDA (qui correspond à la version de la boîte à outils).

Depuis le code de l'application, vous pouvez demander la version de l'API d'exécution avec

cudaRuntimeGetVersion()

ou la version de l'API du pilote avec

cudaDriverGetVersion()

Comme le souligne Daniel, deviceQuery est un exemple d'application SDK qui interroge les éléments ci-dessus, ainsi que les capacités du dispositif.

Comme d'autres l'ont fait remarquer, vous pouvez également vérifier le contenu de la rubrique version.txt en utilisant (par exemple, sur Mac ou Linux)

cat /usr/local/cuda/version.txt

Cependant, si une autre version de la boîte à outils CUDA est installée, autre que celle liée par un lien symbolique à partir de /usr/local/cuda ce qui peut signaler une version inexacte si une autre version est antérieure à la vôtre. PATH que les précédentes, donc à utiliser avec précaution.

11 votes

Nvcc --version devrait fonctionner à partir de l'invite de commande Windows en supposant que nvcc est dans votre chemin.

24 votes

Sous Ubuntu, vous devrez peut-être installer nvidia-cuda-tools pour que cette commande fonctionne, il suffit de taper sudo apt install nvidia-cuda-toolkit

0 votes

@OlegKokorin, si vous obtenez ce conseil à partir du terminal, il semble que vous n'ayez pas installé CUDA.

342voto

[Réponse modifiée. Merci à tous ceux qui l'ont corrigée].

Si vous exécutez

nvidia-smi

Vous devriez trouver le Version CUDA version CUDA la plus élevée prise en charge par le pilote installé dans le coin supérieur droit de la sortie du comand. Au moins, j'ai trouvé cette sortie pour CUDA version 10.0, par exemple, enter image description here

11 votes

On dirait que nvidia-smi ne sort que la version du pilote pour les anciennes versions.

70 votes

L'affichage de la version CUDA ne fonctionne que pour les versions de pilotes postérieures à 410.72. Et il affiche la version CUDA même si aucune CUDA n'est installée. Cette information n'a donc aucun sens actuellement. Référence : devtalk.nvidia.com/default/topic/1045528/

65 votes

Cette réponse est incorrecte, elle indique seulement le support de la version CUDA du pilote. Il ne fournit aucune information sur la version de CUDA qui est installée ou même s'il y a CUDA installé du tout.

230voto

mwweb Points 3391

Sur Ubuntu Cuda V8 :

$ cat /usr/local/cuda/version.txt

Vous pouvez également obtenir des informations sur les versions de CUDA installées :

$ ls -l /usr/local | grep cuda

ce qui vous donnera quelque chose comme ceci :

lrwxrwxrwx  1 root root    9 Mar  5  2020 cuda -> cuda-10.2
drwxr-xr-x 16 root root 4096 Mar  5  2020 cuda-10.2
drwxr-xr-x 16 root root 4096 Mar  5  2020 cuda-8.0.61

Étant donné un PATH sain, la version cuda doit être celui qui est actif (10.2 dans ce cas).

REMARQUE : Cela ne fonctionne que si vous êtes prêt à supposer que CUDA est installé sous /usr/local/cuda (ce qui est vrai pour l'installateur indépendant avec l'emplacement par défaut, mais pas vrai, par exemple, pour les distributions avec CUDA intégré comme un paquet). Réf : commentaire de @einpoklum.

43voto

ShitalShah Points 2213

Pour la version CUDA :

nvcc --version

Ou utiliser,

nvidia-smi

Pour la version cuDNN :

Pour Linux :

Utilisez ce qui suit pour trouver le chemin pour cuDNN :

$ whereis cuda
cuda: /usr/local/cuda

Ensuite, utilisez ceci pour obtenir la version du fichier d'en-tête,

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

Pour Windows,

Utilisez ce qui suit pour trouver le chemin pour cuDNN :

C:\>where cudnn*
C:\Program Files\cuDNN7\cuda\bin\cudnn64_7.dll

Puis utilisez ceci pour vider la version du fichier d'en-tête,

type "%PROGRAMFILES%\cuDNN7\cuda\include\cudnn.h" | findstr CUDNN_MAJOR

Si vous obtenez deux versions différentes pour CUDA sous Windows - Différentes versions de CUDA montrées par nvcc et NVIDIA-smi

39voto

scottclowe Points 1047

D'autres répondants ont déjà décrit les commandes qui peuvent être utilisées pour vérifier la version de CUDA. Ici, je vais décrire comment transformer la sortie de ces commandes en une variable d'environnement de la forme "10.2", "11.0", etc.

Pour résumer, vous pouvez utiliser

nvcc --version

pour connaître la version de CUDA. Je pense que cela devrait être votre premier port d'appel. Si vous avez plusieurs versions de CUDA installées, cette commande devrait afficher la version de la copie la plus élevée dans votre PATH.

Le résultat ressemble à ceci :

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Thu_Jun_11_22:26:38_PDT_2020
Cuda compilation tools, release 11.0, V11.0.194
Build cuda_11.0_bu.TC445_37.28540450_0

Nous pouvons faire passer cette sortie par sed pour ne retenir que le numéro de version MAJOR.MINOR.

CUDA_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9]\+\.[0-9]\+\).*$/\1/p')

Si nvcc n'est pas dans votre chemin, vous devriez pouvoir le lancer en spécifiant le chemin complet vers l'emplacement par défaut de nvcc à la place.

/usr/local/cuda/bin/nvcc --version

La sortie est la même que ci-dessus, et peut être analysée de la même manière.

Vous pouvez également trouver la version CUDA dans le fichier version.txt.

cat /usr/local/cuda/version.txt

Dont la sortie

CUDA Version 10.1.243

peut être analysé avec sed pour ne retenir que le numéro de version MAJOR.MINOR.

CUDA_VERSION=$(cat /usr/local/cuda/version.txt | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')

Notez que parfois le fichier version.txt fait référence à une installation CUDA différente de celle de l'installation CUDA. nvcc --version . Dans ce scénario, la version de nvcc devrait être la version que vous utilisez réellement.

Nous pouvons combiner ces trois méthodes ensemble afin d'obtenir de manière robuste la version CUDA comme suit :

if nvcc --version 2&> /dev/null; then
    # Determine CUDA version using default nvcc binary
    CUDA_VERSION=$(nvcc --version | sed -n 's/^.*release \([0-9]\+\.[0-9]\+\).*$/\1/p');

elif /usr/local/cuda/bin/nvcc --version 2&> /dev/null; then
    # Determine CUDA version using /usr/local/cuda/bin/nvcc binary
    CUDA_VERSION=$(/usr/local/cuda/bin/nvcc --version | sed -n 's/^.*release \([0-9]\+\.[0-9]\+\).*$/\1/p');

elif [ -f "/usr/local/cuda/version.txt" ]; then
    # Determine CUDA version using /usr/local/cuda/version.txt file
    CUDA_VERSION=$(cat /usr/local/cuda/version.txt | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')

else
    CUDA_VERSION=""

fi

Cette variable d'environnement est utile pour les installations en aval, par exemple lorsque pip installe une copie de pytorch qui a été compilée pour la bonne version de CUDA.

python -m pip install \
    "torch==1.9.0+cu${CUDA_VERSION/./}" \
    "torchvision==0.10.0+cu${CUDA_VERSION/./}" \
    -f https://download.pytorch.org/whl/torch_stable.html

De même, vous pouvez installer la version CPU de pytorch lorsque CUDA n'est pas installé.

if [ "$CUDA_VERSION" = "" ]; then
    MOD="+cpu";
    echo "Warning: Installing CPU-only version of pytorch"
else
    MOD="+cu${CUDA_VERSION/./}";
    echo "Installing pytorch with $MOD"
fi

python -m pip install \
    "torch==1.9.0${MOD}" \
    "torchvision==0.10.0${MOD}" \
    -f https://download.pytorch.org/whl/torch_stable.html

Mais soyez prudent avec cela car vous pouvez accidentellement installer une version uniquement pour le CPU alors que vous vouliez avoir le support du GPU. Par exemple, si vous exécutez l'install script sur le nœud de connexion d'un serveur qui n'a pas de GPU et que vos travaux seront déployés sur des nœuds qui ont des GPU. Dans ce cas, le nœud de connexion n'aura généralement pas CUDA installé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X