如何验证 CuDNN 安装?

Posted

技术标签:

【中文标题】如何验证 CuDNN 安装?【英文标题】:How to verify CuDNN installation? 【发布时间】:2015-09-28 07:58:04 【问题描述】:

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

附言。 这是针对 caffe 实现的。目前,在没有启用 CuDNN 的情况下一切正常。

【问题讨论】:

您是否尝试运行一些启用和不启用USE_CUDNN 的示例? 如何验证您的 NVIDIA 和 CUDA 驱动程序是否已安装? @CharlieParker 要验证 CUDA,只需输入 nvcc -V 他们要求 CUDNN 人 :)) 仔细阅读!!! 【参考方案1】:

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

安装 CuDNN

第 1 步:注册一个 nvidia 开发者帐户和download cudnn here(约 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

编辑:在以后的版本中,这可能是以下内容(感谢Aris)

$ cat /usr/local/cuda/include/cudnn_version.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

【讨论】:

CuDNN 的这些步骤很好。如果副本保留符号链接(-av 标志),您会说它们可以得到如此轻微的改进吗? 修改路径对我的安装稍有帮助cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2 最近,要获取版本,以下工作。猫 /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2 对我来说,CUDNN_MAJOR 变量包含在 /usr/local/cuda/include/cudnn_version.h 我使用的是 CuDNN 8.0.5 我支持 @spurra 的评论,较新版本的 cudnn 有一个 cudnn_version.h 文件。因此整个命令看起来像:cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2【参考方案2】:

我的回答显示了如何检查安装的 CuDNN 的版本,这通常也是您想要验证的内容。首先需要找到安装好的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

【讨论】:

不再;现在在 cudnn_version.h 中找到。【参考方案3】:

要检查 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 软件包 repo 并安装 cuda 和工具。但是您之前所说的功能有效。它显示类似 libcudnn.so.7 -> libcudnn.so.7.2.1 @InfiniteLoops 如果您收到“未找到此类命令”的错误,这意味着未安装 nvidia 工具包。尝试命令nvcc 并检查您的输出。检查下面的链接也devtalk.nvidia.com/default/topic/457664/… 运行nvcc -V和cudnn有什么关系?与您的示例一样,它似乎没有显示 cudnn 版本...【参考方案4】:

安装 CuDNN 只需将文件放在 CUDA 目录中。如果您在安装 caffe 时正确指定了路由和 CuDNN 选项,它将与 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 命令从那里安装 caffe。

【讨论】:

太棒了,谢谢你的回答。在 make 文件中启用 cuDNN 并重新编译后,我确实启用了它:D. 有没有办法在不使用 Caffe 的情况下查找是否安装了 cuDNN。类似于您使用 CUDA 获得的示例? @gokul_uf per martin's answer below,您可以使用以下内容(假设您已将 /usr/local/cuda 符号链接到 /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2跨度> @Boooooooooms 他只是在获取编程语言 C 的“头文件”的内容,并使用程序“grep”为我们读出一个特定的变量 grep 不再起作用,因为版本已从 cudnn.h 中取出并放入 cudnn_version.h 。但是您仍然可以使用 cat 命令验证文件是否存在,只需将 | 中的所有内容都省略掉即可。 grep 管道。【参考方案5】:

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

【讨论】:

只是为了添加一个用户案例:我在我的 cuda 安装中找不到 cudnn.h 文件,我以为我没有安装 cudnn。但是我后来运行官网下载的cuda示例代码,通过了…… 我用来查找完整版本号的完整命令是:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL" 酷!我更新了答案,所以现在它会打印这些详细信息。【参考方案6】:

通过.deb在ubuntu上安装时,您可以使用sudo apt search cudnn | grep installed

【讨论】:

说明我安装了first one,那么我安装成功了吗?【参考方案7】:

我有 cuDNN 8.0,上面的建议都不适合我。想要的信息在/usr/include/cudnn_version.h,所以

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

成功了。

【讨论】:

对我来说,带有 cuDNN 8 的 Ubuntu 20.04.1 LTS 中的路径是这样的。/usr/local/cuda/include/cudnn_version.h 希望它可以帮助任何人。【参考方案8】:

在 Ubuntu 20.04LTS 上:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR

返回了预期的结果

【讨论】:

惊人的答案。这是测试 CuDNN 的最简单方法 适用于 Ubuntu 18.04 LTS 对于 cuDNN 8.3,这就是答案,因为 Nvidia 在某处更改了 cudnn.h 上的内容,以删除我们正在处理的 CUDNN_MAJOR 字符串。【参考方案9】:

/usr/src/cudnn_samples_v7/mnistCUDNN 中运行./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

【讨论】:

这实际上是一个不错的建议,除非它是错误的。 mnistCUDNN 不应在该目录中,因为该目录不应该是可写目录。相反,样本应该作为子目录复制到用户主目录并在那里构建。因此,如果按照 Nvidia 网站上的说明正确安装和构建,mnistCUDNN 将位于 ~/cudnn_samples_v7 只是补充一下,您可以从 NVIDIA 官方网站获取代码示例,按照此处的说明 (docs.nvidia.com/deeplearning/sdk/cudnn-install/…) 进行安装和验证。 我明白了。我的cudnn.h 安装在/usr/include/cudnn.h,不知道为什么,但在我用apt-get 安装CUDA 之前发生了这种情况。这次我使用dpkg 并没有改变任何东西......【参考方案10】:

python代码检查怎么样:

from tensorflow.python.platform import build_info as tf_build_info

print(tf_build_info.cudnn_version_number)
# 7 in v1.10.0

【讨论】:

应该是print(tf_build_info.build_info)【参考方案11】:

对于 CUDnn 8.1 及更高版本,请使用以下命令:

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

【讨论】:

【参考方案12】:
torch.backends.cudnn.version()

应该做的伎俩

【讨论】:

请记住,这可能会显示 pytorch 中包含的 cudnn 版本,而不是您可能按照 nvidia 指南手动安装的系统范围的 cudnn。您可以安装 pytorch 中包含的 cuda/cudnn 或 nvidia 提供的 cuda/cudnn 独立版本这一事实引起了很多混乱,但这个答案说明了一切:superuser.com/a/1572762/105024

以上是关于如何验证 CuDNN 安装?的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 16.04 上安装 CUDA 10.1和cuDNN v8.0.5

Ubuntu cudnn安装

Windows11 配置Cuda cuDNN Pytorch环境

Windows10 安装 Anaconda + CUDA + CUDNN (简明)

Windows10 安装 Anaconda + CUDA + CUDNN (简明图文教程)

如何将最新的 cuDNN 安装到 conda?