如何将cuDNN更新到较新版本?

8

cuDNN安装手册表示

所有平台:

将cuDNN存档解压缩到您选择的目录中,以下简称<installpath>。然后按照特定于平台的说明进行操作。

Linux平台:

cd <installpath> export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

通过在编译行中添加-I,在链接行中添加-L -lcudnn,将其添加到构建和链接过程中。

看起来它只是将 pwd 添加到 LD_LIBRARY_PATH 中,所以我想只需替换 pwd 中的文件即可完成更新。

但事实并不像这么简单,因为我完成后收到了Theano的投诉,说

cuDNN版本过旧。请更新至v5,当前版本为3007。

3个回答

10
  1. 将替换为中的文件
  2. 中删除旧的库文件
  3. 添加新的库文件

1
还要确保您的系统路径设置正确。 - Harsh Wardhan

9
我编写了一个脚本,可用于清理安装cuDNN的版本或更改现有版本以安装旧版本/新版本。 您可以从以下链接下载此脚本:

https://github.com/dnzzcn/cuDNNv

该脚本具备以下功能:
#!/bin/bash

rm -f /usr/include/cudnn.h
rm -f /usr/lib/x86_64-linux-gnu/*libcudnn*
rm -f /usr/local/cuda-*/lib64/*libcudnn*


cp -P packages/cudnn/include/cudnn.h /usr/include
cp -P packages/cudnn/lib64/libcudnn* /usr/lib/x86_64-linux-gnu/
chmod a+r /usr/lib/x86_64-linux-gnu/libcudnn*

rm -rf packages/cudnn

它会自动为您安装所需版本的操作系统。

假设packages/在您的CWD中?还需要sudo吗? - Shai
1
是的,packages文件夹包含在存储库目录中。有一个Python脚本调用上面所述的bash脚本以获取所需的cuDNN版本;虽然我不确定,但它应该可以在没有sudo的情况下工作。 - dnzzcn
你的应用程序显示它已经完成了某件事情,即使它实际上并没有完成。 - deadcode
deadcode,您可以在尝试安装cuDNN时检查终端输出吗?如果看到有关权限的错误,请尝试使用sudo运行cuDNNv。 - dnzzcn

7

这是一个老问题,但现在我们有conda。我们不再需要手动替换这些文件了。conda install cudnn 就可以解决所有问题。


1
这在conda环境中安装了cudnn最新版本8.2.1.32。然而,当我运行cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2时,它仍然显示版本为7.5.1。有什么意见吗? - kkgarg
/usr/local/cuda/include/cudnn.h不是conda安装的cudnn版本。Conda将cudnn安装到其本地路径,例如/path/to/conda/envs/env_name/lib。它通过更改二进制文件中的rpath来工作。如果您能阅读中文,您可以阅读博客文章https://zhuanlan.zhihu.com/p/101027069。 - youkaichao
如何安装特定主版本(例如8.1)的最新次要版本? - liang
@liang conda install -c conda-forge cudnn=8.1 请执行上述命令以安装 cudnn=8.1 包。 - Diego Chinellato

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接