J'ai cherché beaucoup d'endroits mais TOUT ce que je reçois, 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 si 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é.
Installer CuDNN implique simplement de placer les fichiers dans le répertoire CUDA. Si vous avez correctement spécifié les itinéraires 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/build
et exécutez cmake ..
à partir de cet emplacement. 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 commandes make
pour installer caffe à partir de là.
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.
Étape 1: Enregistrez un compte de développeur nvidia et téléchargez cudnn ici (environ 80 Mo). Vous aurez peut-être besoin de nvcc --version
pour obtenir votre version cuda.
Étape 2: Vérifiez où se trouve votre installation cuda. Pour la plupart des gens, ce sera /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*
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
Quand 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.
Les utilisateurs d'Ubuntu qui l'ont installé via apt
: https://askubuntu.com/a/767270/10425
Vous devez d’abord trouver le fichier cudnn installé, puis l’analyser. Pour trouver le fichier, vous pouvez utiliser:
whereis cudnn.h
CUDNN_H_PATH=$(whereis cudnn.h)
Si cela ne fonctionne pas, voir "Distributions Redhat" ci-dessous.
Une fois que vous avez trouvé cet emplacement, procédez comme suit (en 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.
Cette méthode d'installation installe cuda dans/usr/include et/usr/lib/cuda/lib64. Par conséquent, le fichier à regarder se trouve dans /usr/include/cudnn.h.
CUDNN_H_PATH=/usr/include/cudnn.h
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2
À partir de CuDNN v5 (du moins lorsque vous installez via les packages Sudo dpkg -i <library_name>.deb
), 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.
Sur CentOS, j'ai trouvé l'emplacement de CUDA avec:
$ whereis cuda
cuda: /usr/local/cuda
J'ai ensuite utilisé la procédure sur le fichier cudnn.h que j'ai trouvé à partir de cet emplacement:
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
Pour vérifier l’installation de CUDA, exécutez la commande ci-dessous, s’il est correctement installé, la commande ci-dessous ne déclenchera aucune erreur et imprimera 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 installé correctement, 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
il devrait donner à la sortie 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
Obtenir la version de CUDNN [Linux]
Utilisez ce qui suit pour trouver le chemin d'accès à 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
Obtenir la version de CuDNN [Windows]
Utilisez ce qui suit pour trouver le chemin d'accès à 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"
Obtenir la version CUDA
Cela fonctionne aussi bien sous Linux que Windows:
nvcc --version
Lors de l'installation sur ubuntu via .deb
, vous pouvez utiliser Sudo apt search cudnn | grep installed
Exécuter ./mnistCUDNN
dans /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