【问题标题】:After building TensorFlow from source, seeing libcudart.so and libcudnn errors从源代码构建 TensorFlow 后,看到 libcudart.so 和 libcudnn 错误
【发布时间】:2017-09-19 21:15:20
【问题描述】:

我正在从源代码构建 TensorFlow。构建似乎成功了;但是,当我的 TensorFlow 程序调用 import tensorflow 时,会出现以下一个或两个错误:

  • ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
  • ImportError: libcudnn.5: cannot open shared object file: No such file or directory

【问题讨论】:

  • CudNN 很可能会丢失或链接不正确
  • 这是哪个版本的 TensorFlow?

标签: tensorflow


【解决方案1】:

首先,针对以下错误:

ImportError: libcudart.so.8.0: 无法打开共享对象文件:没有这样的文件或目录

确保您的LD_LIBRARY_PATH 包含您的lib64 目录在您安装cuda 包的任何路径中。您可以通过在.bashrc 中添加export 行来做到这一点。对于 Omar,它如下所示:

我解决了这个问题,只是将 cuda 路径添加到我的 .bashrc 中

export LD_LIBRARY_PATH=/usr/local/cuda/lib64/


对我来说,我不得不做 Omar 的台词,而且: export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/ 因为我有两个涉及 cuda 的目录(可能不是最好的)。


,你确定你安装了 cuDNN 吗?请注意,这与常规的 cuda 包不同。您需要注册,然后从以下页面下载并安装该软件包: https://developer.nvidia.com/cudnn


第三,我也遇到了同样的问题:

ImportError: libcudnn.5: 无法打开共享对象文件:没有这样的文件或目录

原来我的/usr/local/cuda/lib64/usr/local/cuda-8.0/lib64 目录中没有libcudnn.5。但是,我确实有一个libcudnn.so.6.* 文件。为了解决这个问题,我创建了一个软链接:

ln -s libcudnn.so.6.* libcudnn.so.5

在我的/usr/local/cuda/lib64 目录中。现在一切都对我有用。如果您已经拥有 cuDNN,您的目录可能会有所不同,而您的 libcudnn.so.6.* 可能是不同的版本,所以请检查一下。

【讨论】:

  • 嗨,我使用的是 Ubuntu 14.04,但我无法从 https://developer.nvidia.com/rdp/cudnn-download 访问任何 cuDNN debian 软件包。每个指向 Ubuntu deb 包的链接都会回显 403 错误并显示“未找到页面”。你遇到过这种情况吗?
  • @cosmozhang 可能是暂时的。我也使用 14.04 并且能够下载它。昨天刚做的。
  • 效果很好,除了我必须使用命令 export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH} 来更改环境变量。
【解决方案2】:

我遇到了同样的问题

In [1]: import tensorflow
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
     40     sys.setdlopenflags(_default_dlopen_flags | ctypes.RTLD_GLOBAL)
---> 41   from tensorflow.python.pywrap_tensorflow_internal import *
     42   from tensorflow.python.pywrap_tensorflow_internal import __version__

/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in <module>()
     27             return _mod
---> 28     _pywrap_tensorflow_internal = swig_import_helper()
     29     del swig_import_helper

/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in swig_import_helper()
     23             try:
---> 24                 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
     25             finally:

/usr/local/lib/python3.5/imp.py in load_module(name, file, filename, details)
    241         else:
--> 242             return load_dynamic(name, filename, file)
    243     elif type_ == PKG_DIRECTORY:

/usr/local/lib/python3.5/imp.py in load_dynamic(name, path, file)
    341             name=name, loader=loader, origin=path)
--> 342         return _load(spec)
    343

ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-1-a649b509054f> in <module>()
----> 1 import tensorflow

/usr/local/lib/python3.5/site-packages/tensorflow/__init__.py in <module>()
     22
     23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
     25 # pylint: enable=wildcard-import
     26

/usr/local/lib/python3.5/site-packages/tensorflow/python/__init__.py in <module>()
     49 import numpy as np
     50
---> 51 from tensorflow.python import pywrap_tensorflow
     52
     53 # Protocol buffers

/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
     50 for some common reasons and solutions.  Include the entire stack trace
     51 above this error message when asking for help.""" % traceback.format_exc()
---> 52   raise ImportError(msg)
     53
     54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long

ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "/usr/local/lib/python3.5/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/usr/local/lib/python3.5/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/install_sources#common_installation_problems

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

我已经安装了 cudnn 6.0 而它需要libcudnn.so.5,显然它找不到libcudnn.so.5。看来你的tensorflow需要cudnn 5.x,所以安装cudnn 5.x

确保您已经安装了 cuda 8.0 并导出了 PATHLD_LIBRARY_PATH

要安装 cudnn 5.x,请尝试以下命令

提取 tgz 文件

$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

检查文件

$ cd cuda/lib64/
$ ls -l
total 150908
lrwxrwxrwx 1 doom doom       13 Nov  7  2016 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 doom doom       18 Nov  7  2016 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 doom doom 84163560 Nov  7  2016 libcudnn.so.5.1.10
-rw-r--r-- 1 doom doom 70364814 Nov  7  2016 libcudnn_static.a

在这里你会看到2个符号链接文件,只需将libcudnn.so.5.1.10libcudnn_static.a复制到/usr/local/cuda/lib64

制作符号链接文件

$ cd /usr/local/cuda/lib64/
$ sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
$ ls -l libcudnn*
lrwxrwxrwx 1 root root       13 May 24 09:24 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 root root       18 May 24 09:24 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 root root 84163560 May 24 09:23 libcudnn.so.5.1.10
-rw-r--r-- 1 root root 70364814 May 24 09:23 libcudnn_static.a

include目录下的cudnn.h复制到/usr/local/cuda/include

$ sudo cp cudnn.h /usr/local/cuda/include/

希望对你有帮助!

【讨论】:

  • 如果 cudnn.h 不在 include 中怎么办?
  • @BhabaniMohapatra,你是如何下载cudnn-8.0-linux-x64-v5.1.tgz的?
  • @AlexanderYau 我从 nvidia 网站下载了文件。我已经注册为会员。我注意到include 文件夹在解压后就在那里。我让它工作了。谢谢。
  • 在 Ubuntu 16.04 + Gtx 660 + CUDA 8.0 上为我工作,@AlexanderYau thx
【解决方案3】:

我解决了这个问题,只是将 cuda 路径添加到我的 .bashrc

export LD_LIBRARY_PATH=/usr/local/cuda/lib64/

请记住,首先您需要转到 nvidia 深度学习页面,注册并下载 cuDNN,从 include 和 lib64 文件夹中提取文件并将其复制到您的 cuda 安装中。

【讨论】:

    【解决方案4】:

    我看到了类似的错误(这篇文章的底部),但抱怨 libcudnn.so.6 而不是 libcudart.so.8.0(请参阅下面的注释)。

    解决方案:

    1. 下载“cuDNN v6.0 Linux 库”:
      • 转到https://developer.nvidia.com/rdp/cudnn-download
      • 点击“下载 cuDNN v6.0(2017 年 4 月 27 日),用于 CUDA 8.0
      • 然后点击“cuDNN v6.0 Library for Linux”。将下载一个文件(名为“cudnn-8.0-linux-x64-v6.0.tgz”)。
    2. 按照 Alexander Yau above 的说明安装 cuDNN v6.0 库。


    注意:

    Tensorflow 安装说明(截至 2017 年 8 月 20 日)require installing cuDNN v5.1,但我的 Tensorflow 安装(遵循installing in a virtualenv 的说明)需要 cuDNN v6.x(如错误所示)。我不知道这是我的错误还是 Tensorflow 文档的错误。不过,上述解决方案对我有用。


    遇到错误:

    In [1]: import tensorflow as tf
    ---------------------------------------------------------------------------
    ImportError                               Traceback (most recent call last)
    <ipython-input-1-41389fad42b5> in <module>()
    ----> 1 import tensorflow as tf
    
    /home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/__init__.py in <module>()
         22 
         23 # pylint: disable=wildcard-import
    ---> 24 from tensorflow.python import *
         25 # pylint: enable=wildcard-import
         26 
    
    /home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/__init__.py in <module>()
         47 import numpy as np
         48 
    ---> 49 from tensorflow.python import pywrap_tensorflow
         50 
         51 # Protocol buffers
    
    /home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
         50 for some common reasons and solutions.  Include the entire stack trace
         51 above this error message when asking for help.""" % traceback.format_exc()
    ---> 52   raise ImportError(msg)
         53 
         54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
    
    ImportError: Traceback (most recent call last):
      File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
        from tensorflow.python.pywrap_tensorflow_internal import *
      File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
        _pywrap_tensorflow_internal = swig_import_helper()
      File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
        _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
    ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
    
    
    Failed to load the native TensorFlow runtime.
    
    See https://www.tensorflow.org/install/install_sources#common_installation_problems
    
    for some common reasons and solutions.  Include the entire stack trace
    above this error message when asking for help.
    

    【讨论】:

    【解决方案5】:

    截至目前,张量流支持 cuda-9.0

    做以下事情。希望对您有所帮助:

    $ sudo apt-get install cuda-9.0
    $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
    

    下载 cuDNN for 9.0(下载前需要注册) https://developer.nvidia.com/rdp/form/cudnn-download-survey

    $ sudo dpkg -i libcudnn7_7.1.2.21-1+cuda9.0_amd64.deb
    

    关闭所有终端并打开新的

    $ source activate tensorflow
    $ python
    >> import tensorflow as tf
    

    在此之后您应该不会收到任何错误。

    【讨论】:

      【解决方案6】:

      神秘地,我的libcudnn.so.5 安装在~/cuda/lib64。对于像我这样的人,你需要改变

      export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/cuda/lib64"
      

      export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/yourusername/cuda/lib64"
      

      【讨论】:

        【解决方案7】:

        上述错误通常是由于在运行configure 脚本时未指定 Cuda SDK 或 cuDNN 的版本号。换言之,在运行configure 脚本时,始终指定版本号以响应以下两个问题:

        • Please specify the Cuda SDK version you want to use, e.g. 7.0.
        • Please specify the cuDNN version you want to use.

        不接受系统默认值。

        【讨论】:

          【解决方案8】:

          在 MacOS 上,此问题通常是由在沙盒环境中运行的 bazel 引起的,因此不尊重本地 shell 中设置的 LD_LIBRARY_PATH。我不会费心去探讨在构建工具中深度集成沙盒的优点。

          简单的解决方法是将库符号链接到 /usr/local/lib。

          cd /usr/local/lib &amp;&amp; ln -s ../cuda/lib/libcudart.8.0.dylib

          【讨论】:

            【解决方案9】:

            首先,从here 安装 CUDA 库(7.5 版)

            安装说明: 1-sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb 2-sudo apt-get update 3-sudo apt-get install cuda

            其次,从here 安装 cuDNN

            三、导出cuDNN路径:

            export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
            

            如果您遇到“需要重新安装软件包 libcudnnX”之类的错误,请按照以下步骤操作 here

            【讨论】:

              【解决方案10】:

              查看运行支持 GPU 的 TensorFlow 的 NVIDIA 要求 (link):

              • CUDA® 工具包 8.0

              • 与 CUDA Toolkit 8.0 关联的 NVIDIA 驱动程序

              • cuDNN v6.0

              • 具有 CUDA 计算 Capability 3.0 或更高版本的 GPU 卡

              • libcupti-dev 库,即 NVIDIA CUDA 配置文件工具接口

              我安装了 cuda v5.1,但下面的消息仍然存在:

              ImportError: libcudart.so.8.0: cannot open shared object file:
                No such file or directory
              

              我很生气,因为一切看起来都很好,所以我决定使用以下命令检查我的 GPU(在 Linux 上):

              glxinfo | grep GeForce
              

              我注意到我的 NVIDIA GPU 不受支持:

              OpenGL renderer string: **GeForce GTX 560M**/PCIe/SSE2
              

              在这个link 你可以找到一个列表,像这样:

              所以我的解决方案是使用没有 GPU 支持的张量流。所以我这样做:

              pip uninstall tensorflow-gpu
              

              我在没有支持的情况下安装:

              pip install tensorflow
              

              【讨论】:

                【解决方案11】:

                TensorFlow 1.2.1 与 cuDNN 5.1 兼容,但尚未与 6.0 兼容。所以只需安装 cuDNN 5.1。除此之外,您似乎缺少 CUDA 8.0。

                【讨论】:

                  【解决方案12】:

                  与 GPU、CUDA 和 Docker 相关的常见解决方法一般问题:

                  A. 如果您正在处理机器学习/深度学习相关的部署,请使用 nvidia-docker 而不是 native-docker。要安装 nvidia-docker,请按照以下简单步骤操作。

                  Docker 容器与平台无关,但也与硬件无关。这在使用需要内核模块和用户级库才能运行的专用硬件(例如 NVIDIA GPU)时会出现问题。因此,Docker 本身并不支持容器内的 NVIDIA GPU。

                  B. 如果你想用 docker 访问 GPU,永远不要从头开始构建容器,你会被许多错误所煎熬。相反,只需使用来自 Nvidia-Docker hub 的任何容器。选择任何特定图像,复制其 Dockerfile 并运行 sudo nvidia-docker build -t happyapp .。 [happyapp 是您的新应用名称]。在 5 分钟内,您将准备好您的容器(取决于网络速度:p)。

                  C. 如果您想在其上安装和运行 Tensorflow,切勿下载具有任何 cuda/cudnn 版本的 nvidia-docker。如果你这样做,你会得到 libcudnn.so.6libcudnn.so.9libcusolver.so.8.0 相关的错误,你会很难绕过这个错误。 而是使用预先构建的 TensorFlow Docker 镜像:sudo nvidia-docker run -it tensorflow/tensorflow:latest-gpu /bin/bash

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-02-03
                    • 2018-10-11
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多