¿Cómo verificar la instalación de CuDNN?

145

He buscado en muchos lugares, pero TODO lo que obtengo es CÓMO instalarlo, no cómo verificar que esté instalado. Puedo verificar que mi controlador NVIDIA esté instalado y que CUDA esté instalado, pero no sé cómo verificar que CuDNN esté instalado. La ayuda será muy apreciada, gracias!

PD.
Esto es para una implementación caffe. Actualmente todo funciona sin CuDNN habilitado.

Alfredox
fuente
1
¿Intentaste ejecutar algún ejemplo con y sin USE_CUDNNhabilitado?
pQB
¿Cómo verifica que su controlador NVIDIA y CUDA esté instalado?
Charlie Parker

Respuestas:

43

Instalar CuDNN solo implica colocar los archivos en el directorio CUDA. Si ha especificado las rutas y la opción CuDNN correctamente durante la instalación de caffe, se compilará con CuDNN.

Puedes verificar eso usando cmake. Crea un directorio caffe/buildy corre cmake ..desde allí. Si la configuración es correcta, verá estas líneas:

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

Si todo está correcto, simplemente ejecute las makeórdenes para instalar caffe desde allí.

cesanos
fuente
Impresionante, gracias por la respuesta. Tenía cuDNN habilitado después de habilitarlo en el archivo make y recompilarlo funcionó: D.
alfredox
72
¿Hay alguna manera de saber si cuDNN está instalado sin usar Caffe? ¿Algo así como los ejemplos que obtienes con CUDA?
gokul_uf
66
@gokul_uf por la respuesta de martin a continuación, puede usar lo siguiente (suponiendo que haya enlazado / usr / local / cuda a /usr/local/cuda-#.#): cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
mate
2
@Boooooooooms Simplemente está tomando el contenido de un "archivo de encabezado" para el lenguaje de programación C, y usando el programa "grep" para leer una variable específica para nosotros
Greg Hilston
No tengo Caffe
rjurney
167

La instalación de CuDNN solo está copiando algunos archivos. Por lo tanto, para verificar si CuDNN está instalado (y qué versión tiene), solo necesita verificar esos archivos.

Instalar CuDNN

Paso 1: Registre una cuenta de desarrollador de nvidia y descargue cudnn aquí (aproximadamente 80 MB). Es posible que necesite nvcc --versionobtener su versión de cuda.

Paso 2: comprueba dónde está tu instalación de cuda. Para la mayoría de las personas, lo será /usr/local/cuda/. Puedes consultarlo con which nvcc.

Paso 3: copia los archivos:

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

Comprobar versión

Puede que tenga que ajustar el camino. Vea el paso 2 de la instalación.

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

Notas

Cuando recibes un error como

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

con TensorFlow, podría considerar usar CuDNN v4 en lugar de v5.

Usuarios de Ubuntu que lo instalaron a través deapt : https://askubuntu.com/a/767270/10425

Martin Thoma
fuente
2
Estos pasos para CuDNN son buenos. ¿Diría que pueden mejorarse ligeramente si las copias conservaran el enlace simbólico (-av flags)?
auro
8
modificar la ruta funcionó ligeramente para mi instalacióncat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs
Tuve que cambiar mi camino a/usr/local/cuda/**/*.h
bwest87
El enlace que publicó para descargar enlaces cudnn a los archivos deb. Aquí puede descargar los archivos tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams
Más recientemente, para obtener la versión, funciona lo siguiente. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro
106

Primero necesita encontrar el archivo cudnn instalado y luego analizar este archivo. Para encontrar el archivo, puede usar:

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

Si eso no funciona, vea "Distribuciones de Redhat" a continuación.

Una vez que encuentre esta ubicación, puede hacer lo siguiente (reemplazar ${CUDNN_H_PATH}con la ruta):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

El resultado debería verse así:

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

Lo que significa que la versión es 7.5.0.

Ubuntu 18.04 (a través de sudo apt install nvidia-cuda-toolkit)

Este método de instalación instala cuda en / usr / include y / usr / lib / cuda / lib64, por lo tanto, el archivo que debe consultar está en /usr/include/cudnn.h.

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

Debian y Ubuntu

A partir de CuDNN v5 en adelante (al menos cuando realiza la instalación a través de sudo dpkg -i <library_name>.debpaquetes), parece que podría necesitar usar lo siguiente:

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

Por ejemplo:

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

indica que CuDNN versión 6.0.21 está instalada.

Distribuciones Redhat

En CentOS, encontré la ubicación de CUDA con:

$ whereis cuda
cuda: /usr/local/cuda

Luego usé el procedimiento sobre el archivo cudnn.h que encontré desde esta ubicación:

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

Para verificar la instalación de CUDA, ejecute el siguiente comando , si está instalado correctamente, el siguiente comando no arrojará ningún error e imprimirá la versión correcta de la biblioteca.

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

Para verificar la instalación de CuDNN, ejecute el siguiente comando , si CuDNN está instalado correctamente, no obtendrá ningún error.

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 

O

puede ejecutar el siguiente comando desde cualquier directorio

nvcc -V

debería dar salida a algo como esto

 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
fuente
Ejecuté el comando nvcc -V y arrojó un error. tal comando no encontrado.
Infinite Loops
@InfiniteLoops ¿tiene instalado el kit de herramientas nvidia cuda?
Sherlock
@Sherlock ejecuto directamente el cmd desde la guía de instalación de TensorFlow, que supongo que instalo Cuda n cudnn. Dice que agregue el repositorio de paquetes de Nvidia e instale cuda y herramientas. Pero la función que mencionaste anteriormente funciona. Muestra algo como libcudnn.so.7 -> libcudnn.so.7.2.1
Infinite Loops
@InfiniteLoops si recibe un error de que "tal comando no se encuentra", eso significa que el kit de herramientas nvidia no está instalado. pruebe el comando nvccy verifique su salida. consulte el siguiente enlace también devtalk.nvidia.com/default/topic/457664/…
Sherlock
32

Obteniendo la versión cuDNN [Linux]

Use lo siguiente para encontrar la ruta para cuDNN:

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

Si lo anterior no funciona, intente esto:

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

Obteniendo la versión cuDNN [Windows]

Use lo siguiente para encontrar la ruta para cuDNN:

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

Luego use esto para volcar la versión del archivo de encabezado,

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

Obteniendo la versión CUDA

Esto funciona tanto en Linux como en Windows:

nvcc --version
Shital Shah
fuente
1
Solo para agregar un caso de usuario: no puedo encontrar el cudnn.harchivo en mi instalación de cuda y pensé que no tenía cudnn instalado. Pero luego ejecuté el código de muestra de cuda descargado del sitio web oficial, y pasó ...
yuqli
2
El comando completo que utilicé para encontrar el número completo de la versión fue:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran
¡Frio! Actualicé la respuesta, así que ahora imprime estos detalles.
Shital Shah
16

Al instalar en ubuntu a través de .deb, puede usarsudo apt search cudnn | grep installed

Vlad
fuente
6

Correr ./mnistCUDNNen/usr/src/cudnn_samples_v7/mnistCUDNN

Aquí hay un ejemplo:

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
fuente
44
Esto en realidad no es un mal consejo, excepto cuando está mal. mnistCUDNNno debería estar en ese directorio ya que no se supone que sea un directorio de escritura. Por el contrario, las muestras deberían haberse copiado como un subdirectorio en el directorio de inicio de los usuarios y haberse creado allí. Entonces, si se instaló y construyó correctamente de acuerdo con las instrucciones en el sitio de Nvidia, mnistCUDNN estará en~/cudnn_samples_v7
Mike Wise
Solo para agregar, puede obtener el ejemplo de código del sitio web oficial de NVIDIA, siguiendo las instrucciones aquí ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) sobre cómo instalar y verificar.
yuqli
1
Veo. Mi cudnn.hfue instalado en /usr/include/cudnn.h, no estoy seguro de por qué, pero esto sucedió antes cuando también instalo CUDA apt-get. Esta vez estaba usando dpkgy no
cambié