如何验证CuDNN安装?


144

我已经搜索了很多地方,但是得到的只是如何安装它,而不是如何验证它是否已安装。我可以确认已安装NVIDIA驱动程序,并且已安装CUDA,但是我不知道如何验证已安装CuDNN。帮助将不胜感激,谢谢!

PS。
这是用于caffe的实现。当前,所有功能在未启用CuDNN的情况下都可以正常工作。


1
您是否尝试运行一些USE_CUDNN启用和未启用示例?
pQB

如何验证已安装NVIDIA和CUDA驱动程序?
查理·帕克

Answers:


43

安装CuDNN仅涉及将文件放置在CUDA目录中。如果在安装caffe时正确指定了路由和CuDNN选项,它将使用CuDNN进行编译。

您可以使用检查cmake。创建一个目录caffe/buildcmake ..从那里运行。如果配置正确,您将看到以下行:

-- 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命令从那里安装caffe。


太好了,谢谢您的回答。在make文件中启用cuDNN并重新编译它后,我确实启用了cuDNN:D。
alfredox

72
有没有一种方法可以确定是否在不使用Caffe的情况下安装了cuDNN。像您从CUDA获得的示例一样吗?
gokul_uf

6
@ markul_uf每个马丁在下面的答案,您可以使用以下命令(假设您已将/ usr / local / cuda符号链接到/usr/local/cuda-#.#):– cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
哑光

2
@Boooooooooms他只是获取编程语言C的“头文件”的内容,并使用程序“ grep”为我们读出一个特定的变量
Greg Hilston

我没有Caffe。
rjurney

167

CuDNN的安装只是复制一些文件。因此,要检查是否已安装CuDNN(以及已安装的版本),只需检查这些文件。

安装CuDNN

第1步:注册一个nvidia开发人员帐户并在此处下载cudnn(约80 MB)。您可能需要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。

通过apt以下网址安装它的Ubuntu用户https : //askubuntu.com/a/767270/10425


2
这些对于CuDNN的步骤很好。您是否说如果副本保留了符号链接(-av标志),它们的效果可能会有所改善吗?
auro

8
修改路径对我的安装略有帮助cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs

我不得不将路径更改为/usr/local/cuda/**/*.h
bwest87 '18

您发布的用于下载cudnn的链接指向deb文件。您可以在此处下载tar文件:developer.nvidia.com/rdp/cudnn-archive
BourbonCreams

最近,要获得版本,可以使用以下功能。猫/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我直接从TensorFlow的安装指南中运行cmd,我假设安装的是Cuda n cudnn。它说它添加了Nvidia软件包回购,并安装了cuda和工具。但是您前面提到的功能有效。它显示的内容类似于libcudnn.so.7-> libcudnn.so.7.2.1
无限循环

@InfiniteLoops,如果收到错误消息“找不到此类命令”,则表示未安装nvidia工具包。尝试命令nvcc并检查您的输出。检查下面的链接也devtalk.nvidia.com/default/topic/457664/…–
Sherlock

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

凉!我更新了答案,因此现在可以打印这些详细信息。
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
Mike Wise

只需添加一下,您可以从NVIDIA官方网站获取代码示例,请按照此处的说明(docs.nvidia.com/deeplearning/sdk/cudnn-install/…)进行安装和验证。
yuqli

1
我懂了。我的cudnn.h安装位置为/usr/include/cudnn.h,不知道为什么,但是在我同时安装CUDA之前apt-get也发生了。这次我使用的dpkg是什么,什么也没改变...
yuqli 18-11-27
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.