Как проверить установку CuDNN?

145

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

PS.
Это для реализации кафе. В настоящее время все работает без включения CuDNN.

alfredox
источник
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заказы на установку кафе оттуда.

cesans
источник
Круто, спасибо за ответ. Я включил cuDNN после того, как включил его в make-файл и перекомпилировал его: D.
Альфредокс
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
matt
2
@Boooooooooms Он просто берет содержимое «заголовочного файла» для языка программирования C и использует программу «grep» для считывания определенной переменной для нас
Грег Хилстон
У меня нет Кафе.
Рюрни
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 flags)?
Авро
8
изменение пути немного сработало для моей установкиcat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Мика Стаббс
Я должен был изменить свой путь на/usr/local/cuda/**/*.h
bwest87
Ссылка, которую вы разместили, чтобы скачать cudnn ссылки на файлы deb. Здесь вы можете скачать файлы tar: 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 установите 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"

указывает, что установлена ​​версия 6.0.21 CuDNN.

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. Но позже я запускаю пример кода cuda, загруженного с официального сайта, и он прошел ...
yuqli
2
Полная команда, которую я использовал, чтобы найти полный номер версии, была:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Таран
Прохладно! Я обновил ответ, так что теперь он печатает эти детали.
Шиталь Шах
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
Mike Wise
Просто добавьте, что вы можете получить образец кода на официальном сайте NVIDIA, следуя инструкциям здесь ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ), чтобы узнать, как установить и проверить.
yuqli
1
Понимаю. Мой cudnn.hбыл установлен в /usr/include/cudnn.h, не знаю, почему, но это произошло раньше, когда я также установил CUDA apt-get. На этот раз я использовал dpkgи ничего не изменил ...
yuqli