使用tensorflow-gpu时libcudnn报错的解决方案

实验室服务器上的tensorflow Docker镜像里只有python2的完整环境,而遇到程序需要在python3里跑,于是通过pip3安装了tensorflowtensorflow-gpu。安装完成后在GPU上跑tensorflow时会报错ImportError: libcudnn.5: cannot open shared object file: No such file or directory
经检查发现缩安装的tensorflow需要CUDA8.0以及cuDNN6.0,而服务器上的cuDNN为5.0.
解决方法如下:

  1. 前往NVIDIA网站上的下载页面下载cuDNN v6.0 for CUDA 8.0。注意下载需要注册NVIDIA Developer账号。
  2. 解压所下载的压缩文件。
    tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz
  3. ../cuda/lib64/文件夹下的libcudnn.so.6.0.21libcudnn_static.a这两个文件复制到/usr/local/cuda/lib64/文件夹下。
  4. 建立link

    1
    2
    3
    $ cd /usr/local/cuda/lib64/
    $ sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6
    $ sudo ln -s libcudnn.so.6 libcudnn.so

    如果遇到报错link已存在,将其unlink,重新执行即可。

  5. 复制include文件夹下的cudnn.h到/usr/local/cuda/include
    $ sudo cp cudnn.h /usr/local/cuda/include/
  6. .bashrc文件中添加cuda路径
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
  7. 重新加载.bashrc文件
    source ~/.bashrc