Come verificare l'installazione di CuDNN?


145

Ho cercato in molti luoghi ma TUTTO quello che ottengo è COME installarlo, non come verificare che sia installato. Posso verificare che il mio driver NVIDIA sia installato e che CUDA sia installato, ma non so come verificare che CuDNN sia installato. L'aiuto sarà molto apprezzato, grazie!

PS.
Questo è per un'implementazione del caffe. Attualmente tutto funziona senza CuDNN abilitato.


1
hai provato a fare qualche esempio con e senza USE_CUDNNabilitato?
pQB,

come si verifica che il driver NVIDIA e CUDA sia installato?
Charlie Parker,

Risposte:


43

L'installazione di CuDNN implica solo l'inserimento dei file nella directory CUDA. Se hai specificato correttamente i percorsi e l'opzione CuDNN durante l'installazione di caffe, verrà compilato con CuDNN.

Puoi verificarlo usando cmake. Crea una directory caffe/builded esegui cmake ..da lì. Se la configurazione è corretta vedrai queste righe:

-- 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

Se tutto è corretto, esegui gli makeordini per installare caffe da lì.


Fantastico, grazie per la risposta. Avevo abilitato cuDNN dopo averlo abilitato nel file make e averlo ricompilato funzionava: D.
Alfredox,

72
C'è un modo per scoprire se cuDNN è installato senza usare Caffe. Qualcosa come gli esempi che ottieni con CUDA?
gokul_uf,

6
@gokul_uf per la risposta di martin qui sotto, puoi usare quanto segue (supponendo che tu abbia link simbolico / usr / local / cuda a /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
matt

2
@Boooooooooms Sta semplicemente prendendo il contenuto di un "file di intestazione" per il linguaggio di programmazione C, e usando il programma "grep" per leggere una variabile specifica per noi
Greg Hilston,

Non ho un caffe.
rjurney,

167

L'installazione di CuDNN sta solo copiando alcuni file. Quindi per verificare se CuDNN è installato (e quale versione hai), devi solo controllare quei file.

Installa CuDNN

Passaggio 1: registra un account sviluppatore nvidia e scarica cudnn qui (circa 80 MB). Potresti aver bisogno dinvcc --version ottenere la versione di cuda.

Passaggio 2: controlla dove si trova l'installazione di cuda. Per la maggior parte delle persone, lo sarà /usr/local/cuda/. Puoi verificarlo conwhich nvcc .

Passaggio 3: copia i file:

$ 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*

Controlla la versione

Potrebbe essere necessario regolare il percorso. Vedere la fase 2 dell'installazione.

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

Appunti

Quando viene visualizzato un errore simile

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

con TensorFlow, potresti prendere in considerazione l'utilizzo di CuDNN v4 anziché v5.

Utenti Ubuntu che lo hanno installato tramiteapt : https://askubuntu.com/a/767270/10425


2
Questi passaggi per CuDNN sono validi. Diresti che possono essere leggermente migliorati se le copie conservassero il collegamento simbolico (-av flags)?
auro,

8
la modifica del percorso ha funzionato leggermente per la mia installazionecat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs,

Ho dovuto cambiare il mio percorso in/usr/local/cuda/**/*.h
bwest87

Il link che hai pubblicato per scaricare link cudnn ai file deb. Ecco dove è possibile scaricare i file tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams

Più recentemente, per ottenere la versione, i seguenti lavori. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro

106

Devi prima trovare il file cudnn installato e quindi analizzare questo file. Per trovare il file, è possibile utilizzare:

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

Se il problema persiste, vedi "Distribuzioni Redhat" di seguito.

Una volta trovata questa posizione è quindi possibile effettuare le seguenti operazioni (sostituendo ${CUDNN_H_PATH}con il percorso):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Il risultato dovrebbe assomigliare a questo:

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

Ciò significa che la versione è 7.5.0.

Ubuntu 18.04 (tramite sudo apt installa nvidia-cuda-toolkit)

Questo metodo di installazione installa cuda in / usr / include e / usr / lib / cuda / lib64, quindi il file che devi guardare è in /usr/include/cudnn.h.

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

Debian e Ubuntu

Da CuDNN v5 in poi (almeno quando si installa tramite sudo dpkg -i <library_name>.debpacchetti), sembra che potrebbe essere necessario utilizzare quanto segue:

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

Per esempio:

$ 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"

indica che CuDNN versione 6.0.21 è installata.

Distribuzioni Redhat

Su CentOS, ho trovato la posizione di CUDA con:

$ whereis cuda
cuda: /usr/local/cuda

Ho quindi utilizzato la procedura sul file cudnn.h che ho trovato da questa posizione:

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

47

Per verificare l'installazione di CUDA, esegui il comando di seguito , se installato correttamente, il comando di seguito non genererà alcun errore e stamperà la versione corretta della libreria.

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

Per verificare l'installazione di CuDNN, esegui il comando seguente , se CuDNN è installato correttamente, non otterrai alcun errore.

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 

O

puoi eseguire il comando di seguito da qualsiasi directory

nvcc -V

dovrebbe dare in uscita qualcosa del genere

 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

Eseguo il comando nvcc -V e ha generato un errore. tale comando non trovato.
Infinite Loops

@InfiniteLoops hai installato nvidia cuda toolkit?
Sherlock,

@Sherlock eseguo direttamente il cmd dalla guida all'installazione di TensorFlow, che presumo abbia installato Cuda n cudnn. Dice che aggiunge il repository di pacchetti Nvidia e installa cuda e strumenti. Ma la funzione che hai dichiarato in precedenza funziona. Visualizza qualcosa come libcudnn.so.7 -> libcudnn.so.7.2.1
Infinite Loops

@InfiniteLoops se si riceve l'errore che "tale comando non è stato trovato" significa che il kit di strumenti nvidia non è installato. prova il comando nvcce controlla il tuo output. controlla sotto il link anche devtalk.nvidia.com/default/topic/457664/…
Sherlock

32

Ottenere la versione cuDNN [Linux]

Utilizzare quanto segue per trovare il percorso per cuDNN:

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

Se sopra non funziona prova questo:

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

Ottenere la versione cuDNN [Windows]

Utilizzare quanto segue per trovare il percorso per cuDNN:

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

Quindi utilizzalo per scaricare la versione dal file di intestazione,

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

Ottenere la versione CUDA

Funziona su Linux e Windows:

nvcc --version

1
Solo per aggiungere un caso utente: non riesco a trovare il cudnn.hfile nella mia installazione di cuda e pensavo di non aver installato cudnn. Ma in seguito ho eseguito il codice di esempio cuda scaricato dal sito Web ufficiale, ed è passato ...
yuqli

2
Il comando completo che ho usato per trovare il numero di versione completo era:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran

Freddo! Ho aggiornato la risposta, quindi ora stampa questi dettagli.
Shital Shah,

16

Quando si installa su Ubuntu tramite .debè possibile utilizzaresudo apt search cudnn | grep installed


6

Corri ./mnistCUDNNdentro/usr/src/cudnn_samples_v7/mnistCUDNN

Ecco un esempio:

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

4
Questo in realtà non è un cattivo consiglio, tranne dove è sbagliato. mnistCUDNNnon dovrebbe trovarsi in quella directory poiché non si suppone che sia una directory scrivibile. Piuttosto, gli esempi avrebbero dovuto essere copiati come sottodirectory nella home directory degli utenti e costruiti lì. Quindi, se è stato correttamente installato e costruito secondo le istruzioni sul sito Nvidia, mnistCUDNN sarà presente~/cudnn_samples_v7
Mike Wise,

Solo per aggiungere è possibile ottenere l'esempio di codice dal sito Web ufficiale NVIDIA, seguendo le istruzioni qui ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) per come installare e verificare.
yuqli,

1
Vedo. Il mio è cudnn.hstato installato su /usr/include/cudnn.h, non so perché, ma questo è successo anche quando installo CUDA apt-get. Questa volta stavo usando dpkge non ho cambiato nulla ...
yuqli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.