Tensorflow 已加载运行时CuDNN库:7.1.2,但源代码是使用7.6.0编译的;Ubuntu 18.04

Tensorflow 已加载运行时CuDNN库:7.1.2,但源代码是使用7.6.0编译的;Ubuntu 18.04,tensorflow,tensorflow2.0,ubuntu-18.04,Tensorflow,Tensorflow2.0,Ubuntu 18.04,我试图在标题中解决这个问题: Loaded runtime CuDNN library: 7.1.2 but source was compiled with: 7.6.0. CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version 我读过其他几篇文章(例如:) 这基本上告诉我,我的机器有CUDNN7.1.2,但

我试图在标题中解决这个问题:

Loaded runtime CuDNN library: 7.1.2 but source was compiled with: 7.6.0.  CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version
我读过其他几篇文章(例如:)

这基本上告诉我,我的机器有CUDNN7.1.2,但我需要7.6.0。答案是下载并安装7.6*

唯一的问题是,我认为我是按照nvidia archive()上的说明来做的

如果我转到
/usr/local/cuda/include
并读取
cudnn.h
,它会显示

#if !defined(CUDNN_H_)
#define CUDNN_H_

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 4
目前,我已经安装了CUDA-10.0、10.1和10.2,并将.bashrc设置为10.0(尽管
nvcc--version
说明我有CUDA 9.1--另一个我似乎无法解决的问题)

有什么建议吗?几天来我一直在努力解决这个问题,但运气不好

更新:

这是我的路径

export PATH=$PATH:/usr/local/cuda-10.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export CUDA_HOME=/usr/local/cuda

在此关闭之前,您是否可以建议正确的设置路径或查找旧cudnn?我遇到了一个非常类似的错误:

Loaded runtime CuDNN library: 7.1.4 but source was compiled with: 7.6.5.  CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.
并在我的
ldconfig
中意外发现了一个旧的CuDNN:

$ sudo ldconfig -p | grep libcudnn
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-9.0/lib64/libcudnn.so.7
    libcudnn.so.7 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn.so.7
    libcudnn.so (libc6,x86-64) => /usr/local/cuda-9.0/lib64/libcudnn.so
    libcudnn.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn.so
cuda-9.0目录中的
libcudnn.so.7
文件指向旧版本:

ls -alh /usr/local/cuda-9.0/lib64/libcudnn.so.7
lrwxrwxrwx 1 root root 17 Dec 16  2018 /usr/local/cuda-9.0/lib64/libcudnn.so.7 -> libcudnn.so.7.1.4
ls -alh /usr/lib/x86_64-linux-gnu/libcudnn.so.7
lrwxrwxrwx 1 root root 17 Oct 27  2019 /usr/lib/x86_64-linux-gnu/libcudnn.so.7 -> libcudnn.so.7.6.5
但我已针对较新版本编译了tensorflow:

ls -alh /usr/local/cuda-9.0/lib64/libcudnn.so.7
lrwxrwxrwx 1 root root 17 Dec 16  2018 /usr/local/cuda-9.0/lib64/libcudnn.so.7 -> libcudnn.so.7.1.4
ls -alh /usr/lib/x86_64-linux-gnu/libcudnn.so.7
lrwxrwxrwx 1 root root 17 Oct 27  2019 /usr/lib/x86_64-linux-gnu/libcudnn.so.7 -> libcudnn.so.7.6.5
由于
ldconfig
使用
/etc/ld.so.conf
确定在何处查找库(我猜与
ld\u LIBRARY\u PATH
结合使用),我检查了它,它显示:

include /etc/ld.so.conf.d/*.conf
当我列出该目录中的文件时,我发现了问题文件并将其删除:

$ cat /etc/ld.so.conf.d/cuda9.conf
/usr/local/cuda-9.0/lib64
$ sudo rm /etc/ld.so.conf.d/cuda9.conf

之后,我重新运行
ldconfig
重新加载配置,然后一切正常,错误消失。

您几乎肯定安装了多个CuDNN版本,解决方案是查找并删除它们,或者仔细设置路径,以便找到正确的版本。这是你的系统,只有你知道你做了什么以及在哪里可以找到东西。你的
路径中的CUDA工具包版本可能与你的
LD\u库路径中的版本不匹配
@talonmies有没有找到旧CuDNN的建议?@hristoilev有没有找到正确路径的建议?我已在上面添加了我的当前路径。请使用
ldd your_executable
查看指向所有共享库的路径。没有人知道您在系统上的安装位置-只有您自己知道,因此没有人可以告诉您正确的路径是什么。