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.