Як перевірити встановлення CuDNN?


144

Я шукав багато місць, але ВСЕ, що я отримую, - ЯК встановити його, а не як перевірити, що він встановлений. Я можу перевірити, чи встановлений мій драйвер NVIDIA і встановлено CUDA, але я не знаю, як встановити CuDNN. Допомога буде дуже вдячна, дякую!

PS.
Це для реалізації кави. Наразі все працює без включення CuDNN.


1
ви спробували запустити якийсь приклад із та без USE_CUDNNввімкненого?
pQB

як ви переконаєтесь, що ваш драйвер NVIDIA та CUDA встановлений?
Чарлі Паркер

Відповіді:


43

Встановлення CuDNN просто включає розміщення файлів у каталозі CUDA. Якщо ви правильно вказали маршрути та опцію CuDNN під час встановлення caffe, вона буде складена з CuDNN.

Ви можете перевірити це, використовуючи cmake. Створіть каталог caffe/buildі запустіть cmake ..звідти. Якщо конфігурація правильна, ви побачите наступні рядки:

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

Якщо все правильно, просто запустіть makeзамовлення на встановлення звідти кафе.


Дивовижний, дякую за відповідь. У мене було включено cuDNN після ввімкнення його у файлі make і перекомпіляції його: D.
alfredox

72
Чи є спосіб встановити, чи встановлено cuDNN без використання Caffe. Щось на зразок прикладів, які ви отримуєте з CUDA?
gokul_uf

6
@gokul_uf на відповідь мартіна нижче, ви можете використовувати наступне (якщо припустити, що ви посилаєте / usr / local / cuda на /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
мат

2
@Boooooooooms Він просто приймає вміст "заголовного файлу" для мови програмування C, а за допомогою програми "grep" читає певну для нас змінну
Грег Гілстон,

У мене немає кави.
rjurney

167

Встановлення CuDNN - це просто копіювання деяких файлів. Отже, щоб перевірити, чи встановлено CuDNN (і яку версію у вас є), вам потрібно лише перевірити ці файли.

Встановіть CuDNN

Крок 1: Зареєструйте обліковий запис розробника nvidia та завантажте тут cudnn (близько 80 Мб). Можливо, вам знадобитьсяnvcc --version доведеться отримати версію cuda.

Крок 2: Перевірте, де знаходиться ваша установка cuda. Для більшості людей так і буде /usr/local/cuda/. Ви можете це перевіритиwhich nvcc .

Крок 3. Скопіюйте файли:

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

Перевірте версію

Можливо, вам доведеться скорегувати шлях. Дивіться крок 2 встановлення.

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

Примітки

Коли ви отримуєте помилку типу

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

з TensorFlow ви можете використовувати CuDNN v4 замість v5.

Користувачі Ubuntu, які встановили його черезapt : https://askubuntu.com/a/767270/10425


2
Ці кроки для CuDNN хороші. Чи можете ви сказати, що вони можуть бути дещо настільки вдосконаленими, якби копії зберігали символи посилання (-av прапори)?
ауро

8
модифікація контуру трохи спрацювала на моїй установціcat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs

Мені довелося змінити свій шлях до/usr/local/cuda/**/*.h
bwest87

Посилання, яке ви розмістили, для завантаження cudnn посилань на файли deb. Ось де можна завантажити файли смоли: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams

Зовсім недавно, щоб отримати версію, працюють наступні. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | Grep CUDNN_MAJOR -A 2
AURO

106

Спочатку потрібно знайти встановлений файл cudnn, а потім проаналізувати цей файл. Щоб знайти файл, ви можете використовувати:

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

Якщо це не працює, див. "Redhat дистрибуції" нижче.

Знайшовши це місце, ви можете зробити наступне (замінивши ${CUDNN_H_PATH}шлях):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Результат повинен виглядати приблизно так:

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

Що означає версію 7.5.0.

Ubuntu 18.04 (через sudo apt install nvidia-cuda-toolkit)

Цей спосіб встановлення встановлює cuda в / usr / include і / usr / lib / cuda / lib64, отже, файл, який ви повинні подивитися, знаходиться в /usr/include/cudnn.h.

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

Debian і Ubuntu

Від CuDNN v5 і далі (принаймні, при встановленні через sudo dpkg -i <library_name>.debпакети), схоже, вам може знадобитися використання наступного:

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

Наприклад:

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

вказує на те, що встановлена ​​версія CuDNN версії 6.0.21.

Redhat розподілів

У CentOS я знайшов розташування CUDA за допомогою:

$ whereis cuda
cuda: /usr/local/cuda

Потім я використав процедуру щодо файлу cudnn.h, який знайшов з цього місця:

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

47

Щоб перевірити встановлення CUDA, запустіть команду нижче , якщо вона встановлена ​​належним чином, тоді команда нижче не видасть помилок і надрукує правильну версію бібліотеки.

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

Щоб перевірити встановлення CuDNN, запустіть команду нижче , якщо CuDNN встановлений належним чином, ви не отримаєте жодної помилки.

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 

АБО

ви можете запустити команду нижче з будь-якого каталогу

nvcc -V

це повинно дати вихід щось подібне

 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

Я запускаю команду nvcc -V, і вона кинула помилку. така команда не знайдена.
Нескінченні петлі

@InfiniteLoops у вас встановлений інструментарій nvidia cuda?
Шерлок

@Sherlock я безпосередньо запускаю cmd з посібника з установки TensorFlow, що я припускаю встановити Cuda n cudnn. У ньому йдеться про додавання репо-пакету Nvidia та встановлення cuda та інструментів. Але функція, яку ви заявили раніше, працює. На ньому відображається щось на кшталт libcudnn.so.7 -> libcudnn.so.7.2.1
Нескінченні петлі

@InfiniteLoops, якщо ви отримуєте помилку, що "така команда не знайдена", це означає, що комплект інструментів nvidia не встановлений. спробуйте команду nvccі перевірте свій вихід. перевірте нижче посилання також devtalk.nvidia.com/default/topic/457664/…
Шерлок

32

Отримання версії cuDNN [Linux]

Використовуйте наступне, щоб знайти шлях для cuDNN:

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

Якщо вище не працює, спробуйте це:

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

Отримання версії cuDNN [Windows]

Використовуйте наступне, щоб знайти шлях для cuDNN:

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

Потім використовуйте це, щоб скинути версію файлу заголовка,

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

Отримання версії CUDA

Це працює в Linux, а також Windows:

nvcc --version

1
Просто для додання випадку користувача: я не можу знайти cudnn.hфайл у моїй установці cuda, і я вважав, що не встановлено cudnn. Але пізніше я запускаю зразок коду
куди,

2
Повна команда, яку я використовував, щоб знайти повний номер версії:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Таран

Класно! Я оновив відповідь, тому тепер вона друкує ці деталі.
Shital Shah

16

При установці на ubuntu через .debви можете використовуватиsudo apt search cudnn | grep installed


6

Біжи ./mnistCUDNN в/usr/src/cudnn_samples_v7/mnistCUDNN

Ось приклад:

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
Це насправді не погана порада, за винятком випадків, коли це неправильно. mnistCUDNNне повинно бути в цьому каталозі, оскільки це не повинно бути каталогом, який можна записати. Швидше за все, зразки повинні були бути скопійовані у підкаталог до домашнього каталогу користувачів та побудовані там. Тож якщо вона була належним чином встановлена ​​та побудована згідно з інструкціями на сайті Nvidia, mnistCUDNN буде в~/cudnn_samples_v7
Майк Мудрий

Для додавання ви можете отримати зразок коду на офіційному веб-сайті NVIDIA, дотримуючись інструкцій тут ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) щодо встановлення та перевірки.
yuqli

1
Я бачу. Моя cudnn.hбула встановлена ​​в /usr/include/cudnn.h, не знаю, чому, але це сталося раніше, коли я також встановлював CUDA apt-get. Цього разу я використовував dpkgі нічого не змінював ...
yuqli
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.