Jak zweryfikować instalację CuDNN?


144

Przeszukałem wiele miejsc, ale wszystko, co otrzymuję, to JAK go zainstalować, a nie jak sprawdzić, czy jest zainstalowany. Mogę sprawdzić, czy zainstalowany jest mój sterownik NVIDIA i CUDA, ale nie wiem, jak sprawdzić, czy CuDNN jest zainstalowany. Pomoc będzie bardzo mile widziana, dzięki!

PS.
To jest dla implementacji caffe. Obecnie wszystko działa bez włączonego CuDNN.


1
czy próbowałeś uruchomić jakiś przykład z USE_CUDNNwłączoną i bez włączoną?
pQB,

jak sprawdzić, czy masz zainstalowany sterownik NVIDIA i CUDA?
Charlie Parker

Odpowiedzi:


43

Instalacja CuDNN polega po prostu na umieszczeniu plików w katalogu CUDA. Jeśli poprawnie określiłeś trasy i opcję CuDNN podczas instalacji caffe, zostanie ona skompilowana z CuDNN.

Możesz to sprawdzić za pomocą cmake. Utwórz katalog caffe/buildi uruchom go cmake ..stamtąd. Jeśli konfiguracja jest prawidłowa, zobaczysz te linie:

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

Jeśli wszystko jest w makeporządku, po prostu uruchom polecenia instalacji caffe z tego miejsca.


Super, dziękuję za odpowiedź. Miałem włączony cuDNN po włączeniu go w pliku make i ponownej kompilacji działał: D.
alfredox

72
Czy istnieje sposób, aby sprawdzić, czy cuDNN jest zainstalowany bez korzystania z Caffe. Coś jak przykłady, które otrzymujesz dzięki CUDA?
gokul_uf

6
@gokul_uf per martin odpowiedzi poniżej, możesz użyć następującego (zakładając, że masz dowiązanie symboliczne / usr / local / cuda do /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
Matt

2
@Boooooooooms Po prostu bierze zawartość "pliku nagłówkowego" dla języka programowania C i używa programu "grep" do odczytania dla nas określonej zmiennej
Greg Hilston

Nie mam Caffe.
rjurney

167

Instalacja CuDNN to tylko kopiowanie niektórych plików. Dlatego, aby sprawdzić, czy CuDNN jest zainstalowany (i jaką masz wersję), musisz tylko sprawdzić te pliki.

Zainstaluj CuDNN

Krok 1: Zarejestruj konto programisty nvidia i pobierz cudnn tutaj (około 80 MB). Być może będziesz musiał nvcc --versionpobrać swoją wersję cuda.

Krok 2: Sprawdź, gdzie jest Twoja instalacja CUDA. Dla większości ludzi tak będzie /usr/local/cuda/. Możesz to sprawdzić which nvcc.

Krok 3: Skopiuj pliki:

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

Sprawdź wersję

Być może będziesz musiał dostosować ścieżkę. Zobacz krok 2 instalacji.

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

Uwagi

Gdy pojawi się błąd typu

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

w przypadku TensorFlow można rozważyć użycie CuDNN v4 zamiast v5.

Użytkownicy Ubuntu, którzy zainstalowali go przezapt : https://askubuntu.com/a/767270/10425


2
Te kroki dla CuDNN są dobre. Czy powiedziałbyś, że można by je kiedykolwiek nieznacznie ulepszyć, gdyby kopie zachowały dowiązania symboliczne (flagi -av)?
auro

8
modyfikowanie ścieżki nieznacznie działało dla mojej instalacjicat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs

Musiałem zmienić ścieżkę na/usr/local/cuda/**/*.h
bwest87

Link, który opublikowałeś, aby pobrać linki cudnn do plików deb. Tutaj możesz pobrać pliki tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams

Ostatnio, aby uzyskać wersję, działa następująca. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro

106

Najpierw musisz znaleźć zainstalowany plik cudnn, a następnie przeanalizować ten plik. Aby znaleźć plik, możesz użyć:

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

Jeśli to nie zadziała, zobacz „Dystrybucje Redhat” poniżej.

Po znalezieniu tej lokalizacji możesz wykonać następujące czynności (zastępując ${CUDNN_H_PATH}ścieżką):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Wynik powinien wyglądać mniej więcej tak:

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

Co oznacza, że ​​wersja to 7.5.0.

Ubuntu 18.04 (przez sudo apt zainstaluj nvidia-cuda-toolkit)

Ta metoda instalacji instaluje cuda w / usr / include i / usr / lib / cuda / lib64, stąd plik, na który musisz spojrzeć, znajduje się w /usr/include/cudnn.h.

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

Debian i Ubuntu

Począwszy od CuDNN v5 (przynajmniej w przypadku instalacji za pośrednictwem sudo dpkg -i <library_name>.debpakietów) może być konieczne użycie następujących elementów:

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

Na przykład:

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

wskazuje, że zainstalowano CuDNN w wersji 6.0.21.

Dystrybucje Redhat

Na CentOS znalazłem lokalizację CUDA z:

$ whereis cuda
cuda: /usr/local/cuda

Następnie skorzystałem z procedury dotyczącej pliku cudnn.h, który znalazłem z tej lokalizacji:

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

47

Aby sprawdzić instalację CUDA, uruchom poniższe polecenie , jeśli zostało zainstalowane poprawnie, to poniższe polecenie nie zgłosi żadnego błędu i wydrukuje poprawną wersję biblioteki.

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

Aby sprawdzić instalację CuDNN, uruchom poniższe polecenie , jeśli CuDNN jest zainstalowany poprawnie, nie pojawi się żaden błąd.

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 

LUB

możesz uruchomić poniższe polecenie z dowolnego katalogu

nvcc -V

powinien dać wynik mniej więcej taki

 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

Uruchamiam polecenie nvcc -V i wyrzuciło błąd. takie polecenie nie zostało znalezione.
Nieskończone pętle

@InfiniteLoops czy masz zainstalowany zestaw narzędzi NVIDIA CUDA?
Sherlock

@Sherlock Uruchamiam cmd bezpośrednio z przewodnika instalacji TensorFlow, zakładając instalację Cuda n cudnn. Mówi, że dodaje repozytorium pakietów Nvidii i instaluje cuda i narzędzia. Ale funkcja, którą podałeś wcześniej, działa. Wyświetla coś takiego jak libcudnn.so.7 -> libcudnn.so.7.2.1
Infinite Loops

@InfiniteLoops, jeśli otrzymujesz komunikat „nie znaleziono takiego polecenia”, co oznacza, że ​​zestaw narzędzi nvidia nie jest zainstalowany. spróbuj polecenia nvcci sprawdź wyjście. sprawdź poniższy link również devtalk.nvidia.com/default/topic/457664/…
Sherlock

32

Pobieranie wersji cuDNN [Linux]

Użyj następujących, aby znaleźć ścieżkę do cuDNN:

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

Jeśli powyższe nie działa, spróbuj tego:

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

Pobieranie wersji cuDNN [Windows]

Użyj następujących, aby znaleźć ścieżkę do cuDNN:

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

Następnie użyj tego, aby zrzucić wersję z pliku nagłówkowego,

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

Pobieranie wersji CUDA

Działa to zarówno w systemie Linux, jak i Windows:

nvcc --version

1
Aby dodać przypadek użytkownika: nie mogę znaleźć cudnn.hpliku w mojej instalacji cuda i pomyślałem, że nie mam zainstalowanego cudnn. Ale później uruchomiłem przykładowy kod
cuda

2
Pełne polecenie, którego użyłem do znalezienia pełnego numeru wersji, brzmiało:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran

Chłodny! Zaktualizowałem odpowiedź, więc teraz drukuje te szczegóły.
Shital Shah,

16

Podczas instalacji na Ubuntu przez .debmożesz użyćsudo apt search cudnn | grep installed


6

prowadzony ./mnistCUDNNw/usr/src/cudnn_samples_v7/mnistCUDNN

Oto przykład:

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
To właściwie nie jest zła rada, chyba że jest zła. mnistCUDNNnie powinien znajdować się w tym katalogu, ponieważ nie powinien to być katalog z możliwością zapisu. Próbki powinny raczej zostać skopiowane jako podkatalog do katalogu domowego użytkownika i tam zbudowane. Więc jeśli został poprawnie zainstalowany i zbudowany zgodnie z instrukcją na stronie Nvidii, mnistCUDNN będzie dostępny~/cudnn_samples_v7
Mike Wise

Wystarczy dodać, że możesz pobrać przykładowy kod z oficjalnej strony NVIDIA, postępując zgodnie z instrukcjami tutaj ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ), aby dowiedzieć się, jak zainstalować i zweryfikować.
yuqli

1
Widzę. Mój cudnn.hzostał zainstalowany /usr/include/cudnn.h, nie wiem dlaczego, ale stało się to wcześniej, gdy instalowałem CUDA z apt-get. Tym razem korzystałem dpkgi nic nie zmieniłem ...
yuqli
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.