Como verificar a instalação do CuDNN?

145

Eu procurei em muitos lugares, mas tudo o que recebo é COMO instalá-lo, não como verificar se ele está instalado. Posso verificar se meu driver NVIDIA está instalado e se o CUDA está instalado, mas não sei como verificar se o CuDNN está instalado. Ajuda será muito apreciada, obrigado!

PS.
Isto é para uma implementação caffe. Atualmente, tudo está funcionando sem o CuDNN ativado.

alfredox
fonte
1
você tentou executar algum exemplo com e sem USE_CUDNNativado?
PQB
como você verifica se o driver NVIDIA e CUDA está instalado?
Charlie Parker

Respostas:

43

A instalação do CuDNN envolve apenas a colocação dos arquivos no diretório CUDA. Se você especificou as rotas e a opção CuDNN corretamente ao instalar o caffe, ele será compilado com o CuDNN.

Você pode verificar isso usando cmake. Crie um diretório caffe/builde execute a cmake ..partir daí. Se a configuração estiver correta, você verá estas linhas:

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

Se tudo estiver correto, execute as makeordens para instalar o caffe a partir daí.

cesans
fonte
Impressionante, obrigado pela resposta. Eu tinha o cuDNN ativado depois de habilitá-lo no arquivo make e recompilar ele funcionou: D.
Alfredox
72
Existe uma maneira de descobrir se o cuDNN está instalado sem usar o Caffe. Algo como os exemplos que você recebe com CUDA?
28416 Gokul_uf
6
@gokul_uf de acordo com a resposta de martin abaixo, você pode usar o seguinte (supondo que você vinculou / usr / local / cuda a /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
matt
2
@Boooooooooms Ele está simplesmente tomando o conteúdo de um "arquivo de cabeçalho" para a linguagem de programação C, e usando o "grep" programa para ler uma variável específica para nós
Greg Hilston
Eu não tenho Caffe.
precisa saber é o seguinte
167

A instalação do CuDNN está apenas copiando alguns arquivos. Portanto, para verificar se o CuDNN está instalado (e qual versão você possui), você só precisa verificar esses arquivos.

Instale o CuDNN

Etapa 1: registre uma conta de desenvolvedor da nvidia e faça o download do cudnn aqui (cerca de 80 MB). Pode ser necessário nvcc --versionobter a sua versão cuda.

Etapa 2: verifique onde está sua instalação do cuda. Para a maioria das pessoas, será /usr/local/cuda/. Você pode verificá-lo comwhich nvcc .

Etapa 3: Copie os arquivos:

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

Verificar versão

Você pode ter que ajustar o caminho. Veja o passo 2 da instalação.

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

Notas

Quando você receber um erro como

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

com o TensorFlow, você pode considerar usar o CuDNN v4 em vez da v5.

Usuários do Ubuntu que o instalaram viaapt : https://askubuntu.com/a/767270/10425

Martin Thoma
fonte
2
Essas etapas para o CuDNN são boas. Você diria que elas podem ser levemente melhoradas se as cópias preservarem os links simbólicos (sinalizadores -av)?
auro
8
modificando o caminho ligeiramente trabalhou para minha instalaçãocat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs
Eu tive que mudar meu caminho para/usr/local/cuda/**/*.h
bwest87 13/02/19
O link que você publicou para baixar o cudnn vincula os arquivos deb. Aqui é onde você pode baixar os arquivos tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams
Mais recentemente, para obter a versão, o seguinte funciona. cat /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro
106

Você primeiro precisa encontrar o arquivo cudnn instalado e depois analisá-lo. Para encontrar o arquivo, você pode usar:

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

Se isso não funcionar, consulte "Distribuições Redhat" abaixo.

Depois de encontrar esse local, você pode fazer o seguinte (substituindo ${CUDNN_H_PATH}pelo caminho):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

O resultado deve ser algo como isto:

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

O que significa que a versão é 7.5.0.

Ubuntu 18.04 (via sudo apt install nvidia-cuda-toolkit)

Esse método de instalação instala o cuda em / usr / include e / usr / lib / cuda / lib64; portanto, o arquivo que você precisa ver está em /usr/include/cudnn.h.

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

Debian e Ubuntu

A partir do CuDNN v5 (pelo menos quando você instala via sudo dpkg -i <library_name>.debpacotes), parece que você pode precisar usar o seguinte:

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

Por exemplo:

$ 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 o CuDNN versão 6.0.21 está instalado.

Distribuições Redhat

No CentOS, encontrei a localização da CUDA com:

$ whereis cuda
cuda: /usr/local/cuda

Em seguida, usei o procedimento sobre o arquivo cudnn.h que encontrei neste local:

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

Para verificar a instalação do CUDA, execute o comando abaixo ; se estiver instalado corretamente, o comando abaixo não emitirá nenhum erro e imprimirá a versão correta da 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 a instalação do CuDNN, execute o comando abaixo , se o CuDNN estiver instalado corretamente, você não receberá nenhum erro.

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 

OU

você pode executar o comando abaixo de qualquer diretório

nvcc -V

deve dar saída algo como isto

 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
fonte
Eu executo o comando nvcc -V e deu erro. esse comando não foi encontrado.
Infinite Loops
@InfiniteLoops você tem o nvidia cuda toolkit instalado?
Sherlock
@ Sherlock Eu corro diretamente o cmd do guia de instalação do TensorFlow, que eu assumo instalar o Cuda n cudnn. Ele diz que adiciona repositório de pacotes da Nvidia e instala cuda e ferramentas. Mas a função que você declarou anteriormente funciona. Ele exibe algo como libcudnn.so.7 -> libcudnn.so.7.2.1
Loops infinitos
@InfiniteLoops, se você estiver recebendo o erro de que "esse comando não foi encontrado", significa que o kit de ferramentas nvidia não está instalado. tente o comando nvcce verifique sua saída. verifique abaixo o link também devtalk.nvidia.com/default/topic/457664/…
Sherlock
32

Obtendo a versão cuDNN [Linux]

Use o seguinte para encontrar o caminho para cuDNN:

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

Se acima não funcionar, tente o seguinte:

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

Obtendo a versão cuDNN [Windows]

Use o seguinte para encontrar o caminho para cuDNN:

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

Em seguida, use isso para despejar a versão do arquivo de cabeçalho,

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

Obtendo a versão CUDA

Isso funciona no Linux e no Windows:

nvcc --version
Shital Shah
fonte
1
Apenas para adicionar um caso de usuário: não consigo encontrar o cudnn.harquivo na instalação do cuda e pensei que não tinha o cudnn instalado. Mas depois eu executo o código de amostra cuda baixado do site oficial e passou ...
yuqli 27/11/18
2
O comando completo que usei para encontrar o número da versão completa foi:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran
Legal! Eu atualizei a resposta, agora ele imprime esses detalhes.
Shital Shah
16

Ao instalar no ubuntu via .debvocê pode usarsudo apt search cudnn | grep installed

Vlad
fonte
6

Corre ./mnistCUDNN em/usr/src/cudnn_samples_v7/mnistCUDNN

Aqui está um exemplo:

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
fonte
4
Na verdade, esse não é um mau conselho, exceto onde está errado. mnistCUDNNnão deve estar nesse diretório, pois esse não deve ser um diretório gravável. Em vez disso, as amostras deveriam ter sido copiadas como um subdiretório para o diretório inicial do usuário e construídas lá. Então, se ele foi instalado corretamente e construído de acordo com as instruções no site da Nvidia, mnistCUDNN será em~/cudnn_samples_v7
Mike Wise
Apenas para adicionar, você pode obter o exemplo de código no site oficial da NVIDIA, seguindo as instruções aqui ( docs.nvidia.com/deeplearning/sdk/cudnn-install/… ) para saber como instalar e verificar.
yuqli
1
Entendo. Meu cudnn.hfoi instalado em /usr/include/cudnn.h, não sei por que, mas isso aconteceu antes quando eu instalo o CUDA apt-gettambém. Desta vez eu estava usando dpkge não mudei nada ...
yuqli 27/11