CuDNN 在二进制安装的 cupy 中不可用

Posted

技术标签:

【中文标题】CuDNN 在二进制安装的 cupy 中不可用【英文标题】:CuDNN is not available in binary-installed cupy 【发布时间】:2019-04-24 05:03:31 【问题描述】:

我使用二进制包 cupy-cuda92 安装了 Cupy,但没有加载 CuDNN。

$ pip install cupy-cuda92==5.4.0 chainer==5.4.0

$ python -c 'import chainer; chainer.print_runtime_info()'
/home/xxxxx/.pyenv/versions/3.5.2/lib/python3.5/site-packages/chainer/backends/cuda.py:98: UserWarning: cuDNN is not enabled.
Please reinstall CuPy after you install cudnn
(see https://docs-cupy.chainer.org/en/stable/install.html#install-cudnn).
  'cuDNN is not enabled.\n'
Platform: Linux-4.4.0-103-generic-x86_64-with-debian-stretch-sid
Chainer: 5.3.0
NumPy: 1.16.2
CuPy:
  CuPy Version          : 5.3.0
  CUDA Root             : /usr/local/cuda
  CUDA Build Version    : 9020
  CUDA Driver Version   : 9020
  CUDA Runtime Version  : 9020
  cuDNN Build Version   : None
  cuDNN Version         : None
  NCCL Build Version    : 2307
  NCCL Runtime Version  : 2402
iDeep: Not Available

我尝试使用--no-cache-dir 卸载和重新安装chainer 和cupy,但没有发现任何区别。我还确认了 CUDA 是 9.2。

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Wed_Apr_11_23:16:29_CDT_2018
Cuda compilation tools, release 9.2, V9.2.88

【问题讨论】:

【参考方案1】:

我自己找到了问题和解决方案。

首先我尝试直接导入 cudnn。

$ python
Python 3.5.2 (default, Mar 25 2019, 10:54:56)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cupy.cuda.cudnn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /home/xxxxx/.pyenv/versions/3.5.2/lib/python3.5/site-packages/cupy/cuda/cudnn.cpython-35m-x86_64-linux-gnu.so: symbol cudnnGetBatchNormalizationTrainingExReserveSpaceSize, version libcudnn.so.7 not defined in file libcudnn.so.7 with link time reference

因此存在一种库版本不匹配。我检查了我的LD_LIBRARY_PATH,发现通过cudnnenv 安装了不同版本的CuDNN。我从LD_LIBRARY_PATH 中删除了它们,问题就消失了。

$ python -c 'import chainer; chainer.print_runtime_info()'
Platform: Linux-4.4.0-103-generic-x86_64-with-debian-stretch-sid
Chainer: 5.3.0
NumPy: 1.16.2
CuPy:
  CuPy Version          : 5.3.0
  CUDA Root             : /usr/local/cuda
  CUDA Build Version    : 9020
  CUDA Driver Version   : 9020
  CUDA Runtime Version  : 9020
  cuDNN Build Version   : 7402
  cuDNN Version         : 7500
  NCCL Build Version    : 2307
  NCCL Runtime Version  : 2402
iDeep: Not Available

【讨论】:

仅供参考:LD_LIBRARY_PATH 将在计划于下个月发布的 CuPy v6 中被忽略(始终使用二进制包中捆绑的 cuDNN)。 github.com/cupy/cupy/pull/1770

以上是关于CuDNN 在二进制安装的 cupy 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

如何解决“cuDNN 未启用”

应用内购买显示警告在 iTunes 连接中不可用

centos7安装mysql

CentOS 8 二进制 高可用 安装 k8s 1.16.x

Kubernetes-1.18.4二进制高可用安装

Ubuntu安装cuda与cudnn,亲测可用