Comment vérifier l'installation de CuDNN?

145

J'ai cherché de nombreux endroits, mais tout ce que j'obtiens, c'est COMMENT l'installer, pas comment vérifier qu'il est installé. Je peux vérifier que mon pilote NVIDIA est installé et que CUDA est installé, mais je ne sais pas comment vérifier que CuDNN est installé. L'aide sera très appréciée, merci!

PS.
Ceci est pour une implémentation caffe. Actuellement, tout fonctionne sans CuDNN activé.

Alfredox
la source
1
avez-vous essayé d'exécuter un exemple avec et sans USE_CUDNNactivé?
pQB
comment vérifier que votre pilote NVIDIA et CUDA est installé?
Charlie Parker

Réponses:

43

L'installation de CuDNN consiste simplement à placer les fichiers dans le répertoire CUDA. Si vous avez correctement spécifié les routes et l'option CuDNN lors de l'installation de caffe, il sera compilé avec CuDNN.

Vous pouvez vérifier cela en utilisant cmake. Créez un répertoire caffe/buildet exécutez à cmake ..partir de là. Si la configuration est correcte, vous verrez ces lignes:

-- Found cuDNN (include: /usr/local/cuda-7.0/include, library: /usr/local/cuda-7.0/lib64/libcudnn.so)

-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_30
--   cuDNN             :   Yes

Si tout est correct, exécutez simplement les makecommandes pour installer caffe à partir de là.

cesans
la source
Génial, merci pour la réponse. J'ai activé cuDNN après l'avoir activé dans le fichier make et sa recompilation a fonctionné: D.
alfredox
72
Existe-t-il un moyen de savoir si cuDNN est installé sans utiliser Caffe. Quelque chose comme les exemples que vous obtenez avec CUDA?
gokul_uf
6
@gokul_uf par la réponse de Martin ci-dessous, vous pouvez utiliser ce qui suit (en supposant que vous avez lié symboliquement / usr / local / cuda à /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
matt
2
@Boooooooooms Il prend simplement le contenu d'un "fichier d'en-tête" pour le langage de programmation C, et utilise le programme "grep" pour lire une variable spécifique pour nous
Greg Hilston
Je n'ai pas de Caffe.
rjurney
167

L'installation de CuDNN ne fait que copier certains fichiers. Par conséquent, pour vérifier si CuDNN est installé (et quelle version vous avez), il vous suffit de vérifier ces fichiers.

Installez CuDNN

Étape 1: Enregistrez un compte développeur nvidia et téléchargez cudnn ici (environ 80 Mo). Vous devrez peut-être nvcc --versionobtenir votre version cuda.

Étape 2: Vérifiez où se trouve votre installation cuda. Pour la plupart des gens, ce sera le cas /usr/local/cuda/. Vous pouvez le vérifier avec which nvcc.

Étape 3: Copiez les fichiers:

$ cd folder/extracted/contents
$ sudo cp include/cudnn.h /usr/local/cuda/include
$ sudo cp lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

Vérifier la version

Vous devrez peut-être ajuster le chemin. Voir l'étape 2 de l'installation.

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

Remarques

Lorsque vous obtenez une erreur comme

F tensorflow/stream_executor/cuda/cuda_dnn.cc:427] could not set cudnn filter descriptor: CUDNN_STATUS_BAD_PARAM

avec TensorFlow, vous pouvez envisager d'utiliser CuDNN v4 au lieu de v5.

Utilisateurs d'Ubuntu qui l'ont installé viaapt : https://askubuntu.com/a/767270/10425

Martin Thoma
la source
2
Ces étapes pour CuDNN sont bonnes. Diriez-vous qu'ils peuvent être légèrement améliorés si les copies préservaient les liens symboliques (indicateurs -av)?
auro le
8
la modification du chemin a légèrement fonctionné pour mon installationcat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs
J'ai dû changer mon chemin vers/usr/local/cuda/**/*.h
bwest87
Le lien que vous avez publié pour télécharger des liens cudnn vers les fichiers deb. Voici où vous pouvez télécharger les fichiers tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams
Plus récemment, pour obtenir la version, les travaux suivants. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro
106

Vous devez d'abord trouver le fichier cudnn installé, puis analyser ce fichier. Pour trouver le fichier, vous pouvez utiliser:

whereis cudnn.h
CUDNN_H_PATH=$(whereis cudnn.h)

Si cela ne fonctionne pas, consultez «Distributions Redhat» ci-dessous.

Une fois que vous avez trouvé cet emplacement, vous pouvez effectuer les opérations suivantes (en le remplaçant ${CUDNN_H_PATH}par le chemin):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Le résultat devrait ressembler à ceci:

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

Ce qui signifie que la version est 7.5.0.

Ubuntu 18.04 (via sudo apt installe nvidia-cuda-toolkit)

Cette méthode d'installation installe cuda dans / usr / include et / usr / lib / cuda / lib64, par conséquent le fichier que vous devez consulter se trouve dans /usr/include/cudnn.h.

CUDNN_H_PATH=/usr/include/cudnn.h
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Debian et Ubuntu

À partir de CuDNN v5 (au moins lorsque vous installez via des sudo dpkg -i <library_name>.debpackages), il semble que vous deviez peut-être utiliser les éléments suivants:

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

Par exemple:

$ cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2                                                         
#define CUDNN_MAJOR      6
#define CUDNN_MINOR      0
#define CUDNN_PATCHLEVEL 21
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

indique que la version 6.0.21 de CuDNN est installée.

Distributions Redhat

Sur CentOS, j'ai trouvé l'emplacement de CUDA avec:

$ whereis cuda
cuda: /usr/local/cuda

J'ai ensuite utilisé la procédure à propos du fichier cudnn.h que j'ai trouvé à cet emplacement:

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

Pour vérifier l'installation de CUDA, exécutez la commande ci-dessous , si elle est correctement installée, la commande ci-dessous ne lèvera aucune erreur et affichera la version correcte de la bibliothèque.

function lib_installed() { /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep $1; }
function check() { lib_installed $1 && echo "$1 is installed" || echo "ERROR: $1 is NOT installed"; }
check libcuda
check libcudart

Pour vérifier l'installation de CuDNN, exécutez la commande ci-dessous , si CuDNN est correctement installé, vous n'obtiendrez aucune erreur.

function lib_installed() { /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep $1; }
function check() { lib_installed $1 && echo "$1 is installed" || echo "ERROR: $1 is NOT installed"; }
check libcudnn 

OU

vous pouvez exécuter la commande ci-dessous à partir de n'importe quel répertoire

nvcc -V

cela devrait donner quelque chose comme ça

 nvcc: NVIDIA (R) Cuda compiler driver
 Copyright (c) 2005-2016 NVIDIA Corporation
 Built on Tue_Jan_10_13:22:03_CST_2017
 Cuda compilation tools, release 8.0, V8.0.61
Sherlock
la source
J'exécute la commande nvcc -V et cela a généré une erreur. telle commande introuvable.
Infinite Loops
@InfiniteLoops avez-vous installé nvidia cuda toolkit?
Sherlock
@Sherlock j'exécute directement la cmd à partir du guide d'installation de TensorFlow, que je suppose d'installer Cuda n cudnn. Il dit qu'il ajoute le dépôt de packages Nvidia et installe le cuda et les outils. Mais la fonction que vous avez indiquée précédemment fonctionne. Il affiche quelque chose comme libcudnn.so.7 -> libcudnn.so.7.2.1
Infinite Loops
@InfiniteLoops si vous obtenez une erreur indiquant que "telle commande est introuvable", cela signifie que le kit d'outils nvidia n'est pas installé. essayez la commande nvccet vérifiez votre sortie. consultez également le lien ci-dessous devtalk.nvidia.com/default/topic/457664/…
Sherlock
32

Obtention de la version cuDNN [Linux]

Utilisez ce qui suit pour trouver le chemin de cuDNN:

cat $(whereis cudnn.h) | grep CUDNN_MAJOR -A 2

Si ci-dessus ne fonctionne pas, essayez ceci:

cat $(whereis cuda)/include/cudnn.h | grep CUDNN_MAJOR -A 2

Obtention de la version cuDNN [Windows]

Utilisez ce qui suit pour trouver le chemin de cuDNN:

C:\>where cudnn*
C:\Program Files\cuDNN6\cuda\bin\cudnn64_6.dll

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

type "%PROGRAMFILES%\cuDNN6\cuda\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"

Obtention de la version CUDA

Cela fonctionne sur Linux ainsi que Windows:

nvcc --version
Shital Shah
la source
1
Juste pour ajouter un cas utilisateur: je ne trouve pas le cudnn.hfichier dans mon installation cuda et je pensais que je n'avais pas installé cudnn. Mais plus tard, j'ai exécuté l'exemple de code cuda téléchargé sur le site officiel, et il a passé ...
yuqli
2
La commande complète que j'ai utilisée pour trouver le numéro de version complet était:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran
Cool! J'ai mis à jour la réponse alors maintenant, il imprime ces détails.
Shital Shah
16

Lors de l'installation sur ubuntu via, .debvous pouvez utilisersudo apt search cudnn | grep installed

Vlad
la source
6

Courir ./mnistCUDNN en/usr/src/cudnn_samples_v7/mnistCUDNN

Voici un exemple:

cudnnGetVersion() : 7005 , CUDNN_VERSION from cudnn.h : 7005 (7.0.5)
Host compiler version : GCC 5.4.0
There are 1 CUDA capable devices on your machine :
device 0 : sms 30  Capabilities 6.1, SmClock 1645.0 Mhz, MemSize (Mb) 24446, MemClock 4513.0 Mhz, Ecc=0,    boardGroupID=0
Using device 0
jeff wang
la source
4
Ce n'est en fait pas un mauvais conseil, sauf là où c'est faux. mnistCUDNNne devrait pas être dans ce répertoire car ce n'est pas censé être un répertoire accessible en écriture. Les exemples doivent plutôt avoir été copiés en tant que sous-répertoire dans le répertoire de base des utilisateurs et y être construits. Donc, s'il a été correctement installé et construit selon les instructions sur le site Nvidia, mnistCUDNN sera en~/cudnn_samples_v7
Mike Wise
Juste pour ajouter, vous pouvez obtenir l'exemple de code sur le site Web officiel de NVIDIA, en suivant les instructions ici ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) pour savoir comment installer et vérifier.
yuqli
1
Je vois. My a cudnn.hété installé à /usr/include/cudnn.h, je ne sais pas pourquoi mais cela s'est produit avant lorsque j'installe CUDA avec apt-get. Cette fois, j'utilisais dpkget je n'ai rien changé ...
yuqli