Wie überprüfe ich die CuDNN-Installation?

144

Ich habe viele Orte durchsucht, aber alles, was ich bekomme, ist, wie man es installiert, nicht wie man überprüft, ob es installiert ist. Ich kann überprüfen, ob mein NVIDIA-Treiber installiert ist und ob CUDA installiert ist, aber ich weiß nicht, wie ich überprüfen kann, ob CuDNN installiert ist. Hilfe wird sehr geschätzt, danke!

PS.
Dies ist für eine Caffe-Implementierung. Derzeit funktioniert alles ohne CuDNN aktiviert.

Alfredox
quelle
1
Haben Sie versucht, ein Beispiel mit und ohne USE_CUDNNaktiviert auszuführen ?
pQB
Wie überprüfen Sie, ob Ihr NVIDIA- und CUDA-Treiber installiert ist?
Charlie Parker

Antworten:

43

Bei der Installation von CuDNN werden lediglich die Dateien im CUDA-Verzeichnis abgelegt. Wenn Sie die Routen und die CuDNN-Option während der Installation von caffe korrekt angegeben haben, wird sie mit CuDNN kompiliert.

Sie können dies mit überprüfen cmake. Erstellen Sie ein Verzeichnis caffe/buildund führen Sie es cmake ..von dort aus. Wenn die Konfiguration korrekt ist, werden folgende Zeilen angezeigt:

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

Wenn alles korrekt ist, führen Sie einfach die makeBefehle aus, um caffe von dort aus zu installieren.

cesans
quelle
Super, danke für die Antwort. Ich hatte cuDNN aktiviert, nachdem ich es in der make-Datei aktiviert und neu kompiliert hatte: D.
Alfredox
72
Gibt es eine Möglichkeit herauszufinden, ob cuDNN ohne Verwendung von Caffe installiert ist? So etwas wie die Beispiele, die Sie mit CUDA erhalten?
gokul_uf
6
@gokul_uf per martins Antwort unten können Sie Folgendes verwenden (vorausgesetzt, Sie haben / usr / local / cuda mit /usr/local/cuda-#.# verknüpft):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
matt
2
@Boooooooooms Er nimmt einfach den Inhalt einer "Header-Datei" für die Programmiersprache C und verwendet das Programm "grep", um eine bestimmte Variable für uns vorzulesen
Greg Hilston
Ich habe kein Caffe.
rjurney
167

Bei der Installation von CuDNN werden nur einige Dateien kopiert. Um zu überprüfen, ob CuDNN installiert ist (und welche Version Sie haben), müssen Sie nur diese Dateien überprüfen.

Installieren Sie CuDNN

Schritt 1: Registrieren Sie ein NVIDIA-Entwicklerkonto und laden Sie cudnn hier herunter (ca. 80 MB). Du brauchst vielleichtnvcc --version Sie Ihre Cuda-Version erhalten.

Schritt 2: Überprüfen Sie, wo sich Ihre Cuda-Installation befindet. Für die meisten Menschen wird es so sein /usr/local/cuda/. Sie können es mit überprüfen which nvcc.

Schritt 3: Kopieren Sie die Dateien:

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

Version prüfen

Möglicherweise müssen Sie den Pfad anpassen. Siehe Schritt 2 der Installation.

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

Anmerkungen

Wenn Sie einen Fehler wie erhalten

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

Mit TensorFlow können Sie CuDNN v4 anstelle von v5 verwenden.

Ubuntu-Benutzer, die es installiert haben überapt : https://askubuntu.com/a/767270/10425

Martin Thoma
quelle
2
Diese Schritte für CuDNN sind gut. Würden Sie sagen, dass sie geringfügig verbessert werden können, wenn die Kopien symlinkerhaltend sind (-av Flags)?
Euro
8
Das Ändern des Pfades funktionierte leicht für meine Installationcat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs
Ich musste meinen Weg ändern zu/usr/local/cuda/**/*.h
bwest87
Der Link, den Sie zum Herunterladen von cudnn-Links zu den Deb-Dateien gepostet haben. Hier können Sie die TAR-Dateien herunterladen: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams
In jüngerer Zeit funktioniert Folgendes, um die Version zu erhalten. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro
106

Sie müssen zuerst die installierte cudnn-Datei finden und diese Datei dann analysieren. Um die Datei zu finden, können Sie Folgendes verwenden:

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

Wenn dies nicht funktioniert, lesen Sie unten "Redhat-Verteilungen".

Sobald Sie diesen Ort gefunden haben, können Sie Folgendes tun (durch ${CUDNN_H_PATH}den Pfad ersetzen ):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Das Ergebnis sollte ungefähr so ​​aussehen:

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

Was bedeutet, dass die Version 7.5.0 ist.

Ubuntu 18.04 (über sudo apt nvidia-cuda-toolkit installieren)

Diese Installationsmethode installiert cuda in / usr / include und / usr / lib / cuda / lib64. Daher befindet sich die Datei, die Sie sich ansehen müssen, in /usr/include/cudnn.h.

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

Debian und Ubuntu

Ab CuDNN v5 (zumindest bei der Installation über sudo dpkg -i <library_name>.debPakete) müssen Sie möglicherweise Folgendes verwenden:

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

Beispielsweise:

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

zeigt an, dass CuDNN Version 6.0.21 installiert ist.

Redhat-Distributionen

Unter CentOS fand ich den Standort von CUDA mit:

$ whereis cuda
cuda: /usr/local/cuda

Ich habe dann die Prozedur ungefähr für die Datei cudnn.h verwendet, die ich von diesem Speicherort aus gefunden habe:

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

Um die Installation von CUDA zu überprüfen, führen Sie den folgenden Befehl aus . Wenn es ordnungsgemäß installiert ist, gibt der folgende Befehl keinen Fehler aus und druckt die richtige Version der Bibliothek.

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

Führen Sie den folgenden Befehl aus , um die Installation von CuDNN zu überprüfen. Wenn CuDNN ordnungsgemäß installiert ist, wird kein Fehler angezeigt.

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 

ODER

Sie können den folgenden Befehl aus einem beliebigen Verzeichnis ausführen

nvcc -V

es sollte eine Ausgabe wie diese geben

 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
quelle
Ich führe den Befehl nvcc -V aus und es wurde ein Fehler ausgegeben. solcher Befehl nicht gefunden.
Endlosschleifen
@InfiniteLoops hast du nvidia cuda toolkit installiert?
Sherlock
@ Sherlock Ich führe das Cmd direkt aus der Installationsanleitung von TensorFlow aus, wobei ich davon ausgehe, dass ich Cuda n cudnn installiere. Es heißt, es füge Nvidia-Paket-Repo hinzu und installiere Cuda und Tools. Aber die Funktion, die Sie zuvor angegeben haben, funktioniert. Es zeigt so etwas wie libcudnn.so.7 -> libcudnn.so.7.2.1
unendliche Schleifen
@InfiniteLoops Wenn Sie die Fehlermeldung erhalten, dass "ein solcher Befehl nicht gefunden wurde", bedeutet dies, dass das nvidia-Toolkit nicht installiert ist. Versuchen Sie den Befehl nvccund überprüfen Sie Ihre Ausgabe. Überprüfen Sie unten Link auch devtalk.nvidia.com/default/topic/457664/…
Sherlock
32

CuDNN-Version erhalten [Linux]

Verwenden Sie Folgendes, um den Pfad für cuDNN zu finden:

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

Wenn oben nicht funktioniert, versuchen Sie Folgendes:

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

CuDNN-Version abrufen [Windows]

Verwenden Sie Folgendes, um den Pfad für cuDNN zu finden:

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

Verwenden Sie diese Option, um die Version aus der Header-Datei zu sichern.

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

CUDA-Version erhalten

Dies funktioniert sowohl unter Linux als auch unter Windows:

nvcc --version
Shital Shah
quelle
1
Nur um einen Benutzerfall hinzuzufügen: Ich kann die cudnn.hDatei in meiner cuda-Installation nicht finden und dachte, ich hätte cudnn nicht installiert. Aber ich habe später den Cuda-Beispielcode ausgeführt, der von der offiziellen Website heruntergeladen wurde, und er ist bestanden ...
yuqli
2
Der vollständige Befehl, mit dem ich die vollständige Versionsnummer gefunden habe, war:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran
Cool! Ich habe die Antwort aktualisiert und drucke diese Details jetzt aus.
Shital Shah
16

Bei der Installation auf Ubuntu über können .debSie verwendensudo apt search cudnn | grep installed

Vlad
quelle
6

Führen Sie ./mnistCUDNNin/usr/src/cudnn_samples_v7/mnistCUDNN

Hier ist ein Beispiel:

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
quelle
4
Dies ist eigentlich kein schlechter Rat, außer wenn es falsch ist. mnistCUDNNsollte sich nicht in diesem Verzeichnis befinden, da dies kein beschreibbares Verzeichnis sein soll. Vielmehr sollten die Beispiele als Unterverzeichnis in das Home-Verzeichnis des Benutzers kopiert und dort erstellt worden sein. Wenn es also ordnungsgemäß installiert und gemäß den Anweisungen auf der Nvidia-Website gebaut wurde, mnistCUDNN wird es am ~/cudnn_samples_v7
Mike Wise sein
Zum Hinzufügen können Sie das Codebeispiel von der offiziellen NVIDIA-Website herunterladen. Befolgen Sie dazu die Anweisungen hier ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) zur Installation und Überprüfung.
Yuqli
1
Aha. Mein cudnn.hwurde bei installiert /usr/include/cudnn.h, nicht sicher warum, aber dies geschah vorher, als ich CUDA auch mit installierte apt-get. Diesmal habe ich benutzt dpkgund nichts geändert ...
yuqli