从源代码构建TensorFlow后,看到libcudart.so和libcudnn错误
tensorflow
5
0

我正在从源代码构建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
参考资料:
Stack Overflow
收藏
评论
共 6 个回答
高赞 时间 活跃

首先 ,出现以下错误:

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

确保LD_LIBRARY_PATH在将cuda软件包安装到的路径中都包含lib64目录。您可以通过在.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.*可能是不同的版本,因此请检查一下。

收藏
评论

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

做以下事情。希望能帮助到你 :

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

下载9.0版cuDNN(下载前需要注册) 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

此后,您应该不会出现任何错误。

收藏
评论

我遇到了同样的问题

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

CUDNN安装

确保您已经安装了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/

希望对您有帮助!

收藏
评论

我已经看到了类似的错误(此帖子的底部),但是抱怨libcudnn.so.6而不是libcudart.so.8.0(请参阅下面的注释)。

解:

  1. 下载“ 适用于LinuxcuDNN v6.0库 ”:
    • 转到https://developer.nvidia.com/rdp/cudnn-download
    • 单击` `对于CUDA 8.0,下载cuDNN v6.0(2017年4月27日) ''
    • 然后单击“ 用于LinuxcuDNN v6.0库 ”。将下载一个文件(名为“ cudnn-8.0-linux-x64-v6.0.tgz ”)。
  2. 按照亚历山大攸说明上面安装cuDNN V6.0库。


注意:

Tensorflow安装说明(截至2017年8月20日) 需要安装cuDNN v5.1 ,但我的Tensorflow安装(按照在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.
收藏
评论

神秘地,我的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"
收藏
评论

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

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

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

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号