Tensorflow: 导入错误:libcublas.so.9.0:无法打开共享对象文件:没有那个文件或目录

创建于 2017-12-23  ·  136评论  ·  资料来源: tensorflow/tensorflow

我安装了 tf-nightly build,在导入 tensorflow 时出现以下错误。
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

如果我检查 cuda 9,我会得到以下信息:

ldconfig -v
/usr/local/cuda-8.0/targets/x86_64-linux/lib:
    libnvgraph.so.8.0 -> libnvgraph.so.8.0.61
    libnppicom.so.8.0 -> libnppicom.so.8.0.61
    libnppial.so.8.0 -> libnppial.so.8.0.61
    libcufftw.so.8.0 -> libcufftw.so.8.0.61
    libcufft.so.8.0 -> libcufft.so.8.0.61
    libnppif.so.8.0 -> libnppif.so.8.0.61
    libcublas.so.8.0 -> libcublas.so.8.0.88
    libnvblas.so.8.0 -> libnvblas.so.8.0.88
    libnppi.so.8.0 -> libnppi.so.8.0.61
    libcusolver.so.8.0 -> libcusolver.so.8.0.61
    libnppidei.so.8.0 -> libnppidei.so.8.0.61
    libnvrtc-builtins.so.8.0 -> libnvrtc-builtins.so.8.0.61
    libnvrtc.so.8.0 -> libnvrtc.so.8.0.61
    libnpps.so.8.0 -> libnpps.so.8.0.61
    libcuinj64.so.8.0 -> libcuinj64.so.8.0.61
    libnppig.so.8.0 -> libnppig.so.8.0.61
    libOpenCL.so.1 -> libOpenCL.so.1.0.0
    libnppicc.so.8.0 -> libnppicc.so.8.0.61
    libnppist.so.8.0 -> libnppist.so.8.0.61
    libnppisu.so.8.0 -> libnppisu.so.8.0.61
    libnppim.so.8.0 -> libnppim.so.8.0.61
    libcurand.so.8.0 -> libcurand.so.8.0.61
    libcudart.so.8.0 -> libcudart.so.8.0.61
    libnvToolsExt.so.1 -> libnvToolsExt.so.1.0.0
    libnppitc.so.8.0 -> libnppitc.so.8.0.61
    libnppc.so.8.0 -> libnppc.so.8.0.61
    libcusparse.so.8.0 -> libcusparse.so.8.0.61
/usr/local/cuda-9.1/targets/x86_64-linux/lib:
    libnppicc.so.9.1 -> libnppicc.so.9.1.85
    libnppisu.so.9.1 -> libnppisu.so.9.1.85
    libcufftw.so.9.1 -> libcufftw.so.9.1.85
    libcufft.so.9.1 -> libcufft.so.9.1.85
    libnppial.so.9.1 -> libnppial.so.9.1.85
    libnppist.so.9.1 -> libnppist.so.9.1.85
    libcublas.so.9.1 -> libcublas.so.9.1.85
    libnvblas.so.9.1 -> libnvblas.so.9.1.85
    libnppitc.so.9.1 -> libnppitc.so.9.1.85
    libcusolver.so.9.1 -> libcusolver.so.9.1.85
    libnvrtc.so.9.1 -> libnvrtc.so.9.1.85
    libnvrtc-builtins.so.9.1 -> libnvrtc-builtins.so.9.1.85
    libnppidei.so.9.1 -> libnppidei.so.9.1.85
    libOpenCL.so.1 -> libOpenCL.so.1.0.0
    libnppig.so.9.1 -> libnppig.so.9.1.85
    libnppc.so.9.1 -> libnppc.so.9.1.85
    libcudart.so.9.1 -> libcudart.so.9.1.85
    libnvToolsExt.so.1 -> libnvToolsExt.so.1.0.0
    libnvgraph.so.9.1 -> libnvgraph.so.9.1.85
    libnppif.so.9.1 -> libnppif.so.9.1.85
    libcusparse.so.9.1 -> libcusparse.so.9.1.85
    libaccinj64.so.9.1 -> libaccinj64.so.9.1.85
    libcuinj64.so.9.1 -> libcuinj64.so.9.1.85
    libnppim.so.9.1 -> libnppim.so.9.1.85
    libnppicom.so.9.1 -> libnppicom.so.9.1.85
    libnpps.so.9.1 -> libnpps.so.9.1.85
    libcurand.so.9.1 -> libcurand.so.9.1.85

我是因为名称不匹配。 libcublas.so.9.0 =! libcublas.so.9.1 ? 如果是这样,我们如何克服这一点?

最有用的评论

你解决了吗? 这个问题是由于 tensorflow-gpu-1.5 需要 cuda 9.0,所以你应该安装 tensorflow-gpu-1.4。 并记住卸载 tensorflow-gpu-1.5。 请使用这个“pip install --upgrade tensorflow-gpu==1.4”

所有136条评论

我认为这是由于您拥有 CUDA 9.1 而不是 9.0,我面临着完全相同的问题。

@Timonzimm我知道,我认为整个问题是 nvidia 放置的这个 f** 命名 libcublas.so.xxx。 每当该数字发生变化时,这在 linux 系统上本质上是不匹配的,因此由于它无法找到完全匹配的内容,因此它认为该文件不存在并引发错误。

我认为您应该使用从“cuda/”到“cuda/9.1”的符号链接,否则您的 cuda 版本对于 tensorflow master 分支来说太新了

@burui11087我完全忘记了符号链接。 谢谢你的提醒。

似乎已经解决了(根本原因是 CUDA 的版本不匹配 - 9.0 与 9.1)?
关闭它,因为我知道它可以解决,但如果我弄错了,请告诉我。

仅供参考@gunan @av8ramit (他们正在开发即将发布的 1.5 版本)

我也遇到了与 kirk86 完全相同的问题。 对我来说,我安装了 cuda 工具包 8.0 和 cudnn 5.1。
然后我按照你们上面说的做了,都行不通。

要使用 nightlies,您必须安装 CUDA 9.0 和 cudnn 7。
@yangfengKAUST使用当前版本的 cuda 和 cudnn 安装了 TF 只是抱怨它找不到它期望的版本。

@Timonzimm我面临同样的问题。 你想通了吗?

我安装了 8.0、9.0、9.1 + cudnn 版本,这些版本似乎各不相同。 符号链接在 9.1 库中不起作用。 我怀疑有时当我在 /usr/local/cuda 链接上切换版本时 LD_LIBRARY_PATH 中的符号链接不起作用。 我最终只是以低技术的方式将库加载到我的 java 程序中,直到我能找到一种更清晰的方法来处理 Eclipse 内部的路径。

    try {
        System.load("/usr/local/cuda/lib64/libcublas.so.9.0");
        System.load("/usr/local/cuda/lib64/libcusolver.so.9.0");
        System.load("/usr/local/cuda/lib64/libcudart.so.9.0");
        System.load("/usr/local/cuda/lib64/libcufft.so.9.0");
        System.load("/usr/local/cuda/lib64/libcurand.so.9.0");

        System.load("/home/greg/Desktop/platform/tensorbuilder/jni/libtensorflow_jni.so");
      } catch (UnsatisfiedLinkError e) {
          System.err.println("Native code library failed to load.\n" + e);
          System.exit(1);
      }

.

@asimshankar想知道在您的上述评论中您的意思是我们应该将 cuda 降级到 9.0 并且 tensorflow 1.5 不适用于 cuda 9.1 吗?

您已关闭此问题,但尚不清楚我们应该采取的正确操作是什么!

注意:我还安装了 cuda 9.1 而不是 cuda 9.0。

仅供参考,我都安装了。 从头开始构建也可以使用,但每晚的二进制文件使用 9.0。

@AwasthiMaddy - 是的,TensorFlow 1.5 版本二进制文件是为 CUDA 9 构建的。

你解决了吗? 这个问题是由于 tensorflow-gpu-1.5 需要 cuda 9.0,所以你应该安装 tensorflow-gpu-1.4。 并记住卸载 tensorflow-gpu-1.5。 请使用这个“pip install --upgrade tensorflow-gpu==1.4”

@aipeteryao - 谢谢。

如果这是真的,有人需要修复https://www.tensorflow.org/install/install_linux页面,我只是完全按照其说明进行操作,并告诉您安装 CUDA 8.0(特别是,不是“最新的 CUDA”)。

然后,一旦完成,您就会收到此错误(它正在寻找 cublas 9.0,根据我在此处阅读的内容,它也不会起作用,因为 CUDA 9.1 是您从 NVIDIA 获得的默认值)。

网页说明应该适用于所有内容的默认最新版本,或者它应该明确告诉您安装 tensorflow-gpu-1.4(例如)而不是 tensorflow-gpu..

附议 bwesons 的评论。 我有 CUDA 8.0 和 Tensorflow 1.3。 我按照 TF 1.5(GPU、ubuntu、virtualenv)的当前安装说明进行操作,结果如上所述它中断了。 恢复到 TF 1.3,直到这个问题得到解决。

@aipeteryao这解决了,谢谢! 我最终在我的 virtualenv 中卸载了最新版本并安装了 1.4。

pip3 uninstall tensorflow-gpu
pip3 install --upgrade tensorflow-gpu==1.4

Ubuntu 的安装页面应该更新: https :
由于 TensorFlow 1.5 期待 Cuda 9.0(不是 9.1),以及 cuDNN 7

其实应该看tensorflow的官方文档,里面给出了tensorflow的环境(包括python、gcc、cuda、cudnn等)。

@bwesen是的,你说得对。我的电脑安装了 CUDA 8.0、cudnn 6.0、tensorflow 1.4。

我认为这个问题应该仍然是开放的。 @bwesen评论是正确的。 文档告诉您安装 Cuda 8.0 并使用pip install --upgrade tensorflow-gpu 。 现在,这为您提供了不适用于 Cuda 8.0 的 tensorflow 1.5

ping @asimshankar

我有同样的问题(使用 cuda 9.1 + tensorflow 1.5)。 我认为要解决它,一种选择是将 cuda 降级到 9.0。 另一种选择是将 cuda 降级到 8.0,将 tensorflow 降级到 1.4。 如果您已经安装了 cuda 8.0,您只需要修改LD_LIBRARY_PATH (和CUDA_HOME )环境变量以指向 cuda 8.0 目录(即/usr/local/cuda-8.0 )。

我遇到了这个问题(Cuda 9.1.85,cuDNN 7.05)

尝试使用 tensorflow 1.5,它坏了。 卸载了,用pip3 install --upgrade tensorflow-gpu==1.4安装了 1.4,还是坏了。

@DylanDmitri 1.5 期望 Cuda 9.0,而不是 9.1

您是否尝试过 Cuda 9.0 驱动程序?

@DylanDmitri @mkaze你需要 Cuda 9.0。

此外,对于安装要求有问题的任何人,我建议仔细检查您的 cuDNN 安装。 .deb 文件对我不起作用,因为它没有将文件复制到正确的位置。 我必须使用 .tgz 文件并根据 nVidia 的说明手动复制文件才能获得有效安装。

为什么不直接安装 cuda-9-0?

  • 去这里: https :
  • 然后,对我来说:下载 deb(网络)
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys \
     http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-9-0

为什么不直接安装 cuda-9-0?

@abrahamrhoffman这对于拥有 sudo 权限的任何人来说

@abrahamrhoffman您是否也介意为否决票提供理由?

我安装了 cuda-9.0,但仍然无法正常工作。 这真的很烦人。

请确保正确设置您的 PATH 变量,例如此处所述: https :

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

cuda 9.1 是当前版本。 我想让TF使用它。 如何?

即使 tf-nightly-gpu 也不是在寻找 cuda 9.1。 嗯

我尝试了从所有 9.0 文件名到所有 9.1 文件名的符号链接,但没有奏效。 最后,TF才知道真实版本。 存储库甚至不再有 9.0,所以如果我删除 9.1 然后手动安装 9.0,恐怕我会破坏我的 nvidia 东西。

我现在通过以下方式修复他:

从以下位置下载 deb(网络): https : =debnetwork

然后: dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb

然后:能力更新

然后: aptitude install cuda-9-0

首先我安装了 tensorflow 1.5,它坏了,我收到以下错误:
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
然后我卸载了,用 pip install --upgrade tensorflow-gpu==1.4 安装了 1.4,它没有用,我收到以下错误:
ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory

@xiezhongzhao您使用的是什么版本的 Cuda? 对于 tensorflow 1.5,您必须安装 Cuda 9.0,对于 tensorflow 1.4,您必须使用 cuda 8.0。 如果 tensorflow 版本和 cuda 版本兼容,则检查环境变量,即CUDA_HOMELD_LIBRARY_PATH

@mkaze我用的是 Cuda9.1

@xiezhongzhao安装 Cuda 9.0,你应该没问题。 Tensorflow 1.5 不适用于 Cuda 9.1。

@mkaze非常感谢

我也遇到了这个问题并正在努力解决它。

$ pip3 install tensorflow-gpu
$ python3
>>> import tensorflow
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/home/ubuntu/.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/lib/python3.5/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/usr/lib/python3.5/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

我按照这些说明安装
https://www.tensorflow.org/install/install_linux#nvidia_requirements_to_run_tensorflow_with_gpu_support

我相信我从 nvidia 安装了正确的版本。 文件名是
cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
cudnn-9.0-linux-x64-v7.tgz (7.0.5 版)

我按照 tensorflow 文档上的说明设置了路径,并尝试了上面abrahamrhoffman给出的说明。

当我运行 ldconfig -v 时,我得到了一些 9.0 库,但看不到 libcublas.so.9.0

/usr/local/cuda-9.0/targets/x86_64-linux/lib:
    libaccinj64.so.9.0 -> libaccinj64.so.9.0.176
    libOpenCL.so.1 -> libOpenCL.so.1.0.0
    libnvToolsExt.so.1 -> libnvToolsExt.so.1.0.0
    libcuinj64.so.9.0 -> libcuinj64.so.9.0.176
    libcudart.so.9.0 -> libcudart.so.9.0.176
/usr/local/cuda-9.1/targets/x86_64-linux/lib:
    libnppif.so.9.1 -> libnppif.so.9.1.85
    libcusparse.so.9.1 -> libcusparse.so.9.1.85
    libcusolver.so.9.1 -> libcusolver.so.9.1.85
    libnpps.so.9.1 -> libnpps.so.9.1.85
    libnppial.so.9.1 -> libnppial.so.9.1.85
    libnvgraph.so.9.1 -> libnvgraph.so.9.1.85
    libcuinj64.so.9.1 -> libcuinj64.so.9.1.85
    libaccinj64.so.9.1 -> libaccinj64.so.9.1.85
    libnppicc.so.9.1 -> libnppicc.so.9.1.85
    libcudart.so.9.1 -> libcudart.so.9.1.85
    libnppc.so.9.1 -> libnppc.so.9.1.85
    libnppicom.so.9.1 -> libnppicom.so.9.1.85
    libOpenCL.so.1 -> libOpenCL.so.1.0.0
    libnppig.so.9.1 -> libnppig.so.9.1.85
    libnvToolsExt.so.1 -> libnvToolsExt.so.1.0.0
    libnppidei.so.9.1 -> libnppidei.so.9.1.85
    libcurand.so.9.1 -> libcurand.so.9.1.85
    libnvblas.so.9.1 -> libnvblas.so.9.1.128
    libnvrtc.so.9.1 -> libnvrtc.so.9.1.85
    libnppitc.so.9.1 -> libnppitc.so.9.1.85
    libnppist.so.9.1 -> libnppist.so.9.1.85
    libcublas.so.9.1 -> libcublas.so.9.1.128
    libnppim.so.9.1 -> libnppim.so.9.1.85
/sbin/ldconfig.real: /usr/local/cuda-9.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link

    libcudnn.so.7 -> libcudnn.so.7.0.5
    libcufftw.so.9.1 -> libcufftw.so.9.1.85
    libcufft.so.9.1 -> libcufft.so.9.1.85
    libnppisu.so.9.1 -> libnppisu.so.9.1.85
    libnvrtc-builtins.so.9.1 -> libnvrtc-builtins.so.9.1.85

我没有安装 9.1,至少不是故意的。 这是在带有股票 ubuntu 16.04 的亚马逊 ec2 实例上。
nvidia-smi 也返回一个 gpu,这是一个 g3.4xlarge 实例

非常感谢任何指导。

根据 CUDNN 指南:

http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

您需要将解压后的文件(从您运行$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz或类似的目录)复制到/usr/local/cuda子目录中:

$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
/usr/local/cuda/lib64/libcudnn*

感谢您的回复@entropy43。

我应该更具体。 我在tar之后做了这两个cpchmod命令。 当我在文件夹 cuda 文件夹中查看我运行 tar 命令的位置时,如ls cuda/lib64我看到
libcudnn.so libcudnn.so.7 libcudnn.so.7.0.5 libcudnn_static.a

我也从 nvidia doc 中尝试了这一部分
2.3.2. Installing from a Debian File

和测试通过这里2.4. Verifying

任何获得该库的建议表示赞赏

有人可以总结一下目前的情况吗? 我正在使用 TF1.3 + cuda 8 没有问题。 我想升级,但新版本的安装过程似乎完全中断。 建议?

类似于 yazabazra 在上面询问的内容:
TF1.6 Ubuntu 16.04
NVCC -V
nvcc:NVIDIA (R) Cuda 编译器驱动程序
版权所有 (c) 2005-2017 NVIDIA Corporation
建立于 Fri_Nov__3_21:07:56_CDT_2017
Cuda编译工具,发布9.1,V9.1.85
这需要 Nvidia 显示驱动程序 390+
关键要看: https :

whelp添加到这一切,经过大量的麻烦后,我将Nvidia更新到了最新版本,见上文,因为TF文档指出早期版本中存在错误..

现在我得到了:
导入错误:libcublas.so.9.0:无法打开共享对象文件:没有那个文件或目录
无法加载本机 TensorFlow 运行时。

这似乎是 9.0(TF 想要的)与 9.1 之间的不匹配,这是最新的 Nvidia。
使用 9.1 运行似乎更好,但我宁愿避免从源代码构建 TF,而且似乎无论如何都无法修复它..

这个组合可以与二进制包一起使用吗?
TF 1.6 库达 9.1 ??

对看这里的人的进一步注意和警告......在升级我的 Nvidia 东西后,我在单独的 conda env 中的旧版本 TF 不再像旧的 TF 想要的那样工作:ImportError:libcublas.so.8.0:无法打开共享对象文件:没有这样的文件或目录
所以 9.1 不会削减它.. 指定大于怎么样? 与特定版本? 只是一个建议..与此同时,我已经死在水里了..

这就是为什么支持 9.1 的二进制文件的可用性会很好:(来自 TF1.6 发行说明)

XLA:GPU与 CUDA 9 和 CUDA 9.1 一起使用会导致垃圾结果和/或
CUDA_ILLEGAL_ADDRESS 失败。

谷歌在 2017 年 12 月中旬发现 CUDA 9 中的 PTX-to-SASS 编译器
和 CUDA 9.1 有时无法正确计算进位位
将具有大偏移量的 64 位地址计算(例如加载 [x + large_constant])分解为 SASS 中的 32 位算法。

结果,这些版本的 ptxas 错误编译了大多数使用的 XLA 程序
超过 4GB 的临时内存。 这会导致垃圾结果和/或
CUDA_ERROR_ILLEGAL_ADDRESS 失败。

预计 2018 年 2 月下旬将修复 CUDA 9.1.121。我们预计不会出现
修复 CUDA 9.0.x。 在修复可用之前,唯一的解决方法是
降级到 CUDA 8.0.x
或禁用XLA:GPU。

也许其中一首夜曲做到了?

另一个解决方案? 因为 TF 似乎在搜索特定的 Rev 版本,所以可以安装 Cuda 的多个版本吗? 如果是这样,有关如何操作的任何建议?

所以理想情况下,我可以在一个 conda 环境中运行 TF 1.4(目前需要 Cuda 8.0),在另一个环境中运行 TF 1.6(目前需要 Cuda 9.0)?

所以我刚刚添加了 sudo apt-get -y install cuda-toolkit-9.0 并且我已经启动并运行了 TF1.6

@dartdog安装 cuda-toolkit-9.0 后,您是否遇到过ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory

@dartdog

sudo apt-get install cuda-7-0
vim ~/.bashrc
export PATH=/usr/local/cuda-7.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda7.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

正如@bwesen 所说,这绝对应该包含在 tensorflow 文档中。 它也应该包含在错误列表中。 我们有可能这样做吗? 我想我要开一个新问题,要求添加对 cuda 9.1 的支持,或者在文档中特别提到您需要 cuda 9.0,并将其包含在错误列表中

好了朋友们。 我现在在https://github.com/tensorflow/tensorflow/issues/17629开了一个新问题

我也在处理这个问题。 什么对我有用 tensorflow-gpu 1.6:

  • 我从存档中下载了 9.0 的工具包,但它安装为 9.1(我不知道为什么......)
  • 仍然没有找到 libcublas.so.9.0
  • 按照安装说明末尾的建议运行: sudo apt-get install cuda-libraries-9-0
  • 问题似乎已经解决了。

如果你想让 tensorflow 与你的 CUDA 版本一起工作,你需要先卸载它然后从源代码编译它并在运行 ./configure 时指定 CUDA 版本
详细信息可以在这里找到: https :

我正在尝试这个(手动构建 tensorflow)链接

可能需要更长的时间,但您可以通过这种方式定义次要版本。

@mldm4实际上,命令sudo apt-get install cuda可能为您安装了 9.1,因为您的系统中也有它。 我遇到了同样的问题,我做了sudo apt-get install cuda-9-0来安装特定版本(我也从存档中下载了)。
我认为你所做的命令( sudo apt-get install cuda-libraries-9-0 )也下载了 cuda 9.0.0。
这个问题没有解决,正如我在 issue 17629 中提到的,我知道问题是 TensorFlow 需要 9.0 版本,而我有 9.1。 问题是在文档中更清楚地提及这一点,并将其包含在文档底部的常见安装问题中,或者更新 tensorflow 以接受 Cuda 9.1。

所以还没有解决方案吗?

@线程

*请仔细阅读帖子! *

阅读线程并发现解决方案是您的工作; 不是简单地滚动到最后。

@abrahamrhoffman这很粗鲁。

我刚刚将我的 batchrc 从 cuda-9.1 更改为 cuda。 然后我的 tensorflow 能够找到 libcublas.so.9.0

@DanlanChen那可能是因为您还安装了 9.1。 要安装 9.0,在下载步骤中,执行sudo apt-get install cuda-9-0而不是sudo apt-get install cuda

@cubetastic33我降级了我的 tensorflow 版本并使用 cuda8.0,无论如何谢谢你。

@DanlanChen但是,我想最好使用最新版本。 所以,如果您想升级,您现在知道该怎么做! :微笑:

我面临同样的问题,但我正在尝试使用 nvidia-docker 运行 tensorflow。 我在主机上安装了 cuda-9-0,但是当我尝试运行我的 docker 容器时,我得到了

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory

@magick93和所有这些都出现在这里!

听! 您需要的任何东西都是降级您的 cuda 9.1 -> cuda 9.0。 而已! 就这样做(如果您之前下载了 cuda 9.1,您可以在终端中执行以下命令):

sudo apt-get install cuda-9-0并通过 rm -rf 删除 cuda 9.1。

顺便说一句,不要忘记在~/.bashrc (9.1 -> 9.0) 中更改 $PATH。

@ Oktai15

听! 您需要的任何东西都是降级您的 cuda 9.1 -> cuda 9.0。 而已! 去做就对了

是的,我已经这样做了 - 很多次。

sudo apt-get install cuda-9-0
[sudo] password for anton: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
cuda-9-0 is already the newest version (9.0.176-1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
$ ldconfig -p | grep cuda
    libnvrtc.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc.so.9.0
    libnvrtc.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc.so
    libnvrtc-builtins.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc-builtins.so.9.0
    libnvrtc-builtins.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvrtc-builtins.so
    libnvgraph.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvgraph.so.9.0
    libnvgraph.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvgraph.so
    libnvblas.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvblas.so.9.0
    libnvblas.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvblas.so
    libnvToolsExt.so.1 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvToolsExt.so.1
    libnvToolsExt.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnvToolsExt.so
    libnpps.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnpps.so.9.0
    libnpps.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnpps.so
    libnppitc.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppitc.so.9.0
    libnppitc.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppitc.so
    libnppisu.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppisu.so.9.0
    libnppisu.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppisu.so
    libnppist.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppist.so.9.0
    libnppist.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppist.so
    libnppim.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppim.so.9.0
    libnppim.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppim.so
    libnppig.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppig.so.9.0
    libnppig.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppig.so
    libnppif.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppif.so.9.0
    libnppif.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppif.so
    libnppidei.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppidei.so.9.0
    libnppidei.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppidei.so
    libnppicom.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppicom.so.9.0
    libnppicom.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppicom.so
    libnppicc.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppicc.so.9.0
    libnppicc.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppicc.so
    libnppial.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppial.so.9.0
    libnppial.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppial.so
    libnppc.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppc.so.9.0
    libnppc.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libnppc.so
    libicudata.so.55 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libicudata.so.55
    libcusparse.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusparse.so.9.0
    libcusparse.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusparse.so
    libcusolver.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusolver.so.9.0
    libcusolver.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcusolver.so
    libcurand.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so.9.0
    libcurand.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so
    libcuinj64.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcuinj64.so.9.0
    libcuinj64.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcuinj64.so
    libcufftw.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufftw.so.9.0
    libcufftw.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufftw.so
    libcufft.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufft.so.9.0
    libcufft.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcufft.so
    libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.7
    libcudart.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart.so.9.0
    libcudart.so.7.5 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudart.so.7.5
    libcudart.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudart.so
    libcudart.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudart.so
    libcuda.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so.1
    libcuda.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so
    libcublas.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcublas.so.9.0
    libcublas.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libcublas.so
    libaccinj64.so.9.0 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libaccinj64.so.9.0
    libaccinj64.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libaccinj64.so
    libOpenCL.so.1 (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libOpenCL.so.1
    libOpenCL.so (libc6,x86-64) => /usr/local/cuda-9.0/targets/x86_64-linux/lib/libOpenCL.so

然而我什至无法运行这个简单的 tensorflow 脚本,因为它导致我得到ImportError: No module named tensorflow.python.client

from tensorflow.python.client import device_lib

def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos if x.device_type == 'GPU']

get_available_gpus()

我在这里遇到了每个人都遇到的同样问题,安装 9.0 确实有帮助,但后来我遇到了其他问题。
然后我跟着这个,它终于对我有用。

@Oktai15不会rm -rf删除您的系统吗? 请在这里更清楚,因为人们可能会在没有进入所需目录的情况下尝试它,并最终清空他们的主文件夹。

@magick93您的问题似乎是其他问题,而不是 CUDA 版本。

我有同样的问题,我想我通过一些改变解决了,这个组合对我有用

Ubuntu 16、cuda 9.0、cudnn 7.0、python 3,5、tensorflow 1.6

如果您在仍然有以前版本的情况下安装新的 cuda,请确保指定这样的路径

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

@Abduoit你的 Ubuntu 版本并不重要。 问题是,TensorFlow 1.6 期望 CUDA 为 9.0 版,而 cuDNN 为 7.0.4 版(是的,0.4 _does_ 很重要)

回溯(最近一次调用最后一次):
文件“utils.py”,第 15 行,在
将张量流导入为 tf
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/__init__.py”,第 24 行,在
从 tensorflow.python 导入 *
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/python/__init__.py”,第 49 行,在
从 tensorflow.python 导入 pywrap_tensorflow
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py”,第 74 行,在
引发导入错误(味精)
导入错误:回溯(最近一次调用最后一次):
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py”,第58行,在
从 tensorflow.python.pywrap_tensorflow_internal 导入 *
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py”,第28行,在
_pywrap_tensorflow_internal = swig_import_helper()
文件“/home/sagar/miniconda2/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py”,第 24 行,在 swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
导入错误:libcublas.so.9.0:无法打开共享对象文件:没有那个文件或目录

无法加载本机 TensorFlow 运行时。

请参阅https://www.tensorflow.org/install/install_sources#common_installation_problems
须藤 apt-get 安装 cuda-7-0
vim ~/.bashrc
导出路径=/usr/local/cuda-7.0/bin${PATH:+:${PATH}}
导出 LD_LIBRARY_PATH=/usr/local/cuda7.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
导出路径=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
导出 LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PA
出于一些常见的原因和解决方案。 包括整个堆栈跟踪
寻求帮助时出现在此错误消息上方。

正如@pascalwhoop提到的,我按照http://www.python36.com/install-tensorflow141-gpu/ 中的说明从源代码构建 Tensorflow。

每当它说 cuda 9.0 我更改为 9.1,cudnn 7.0 我放 7.1.2。

工作正常,到目前为止!

@SAGGSOC为什么要安装 cuda 7.0? 您需要 CUDA 9.0 和 CuDNN 7.0.4

每个遇到问题的人:谁愿意将其转变为与社区共享的可靠 docker 图像。 而是在工作之前进行 6gb 图像拉取,而不是 DLing 5 个版本的 CuDNN。

https://github.com/pascalwhoop/tf_openailab_gpu_docker

我开始了一段时间,但由于项目重点转移而停止。 但我认为值得追求。 避免了从大多数人那里找到 17 个移动部件的正确组合的全部麻烦。

只是为了向可能偶然发现这篇文章的任何人澄清一些事情。 我在我的系统中安装了 cuda-8.0、cuda-9.0、cuda-9.1。 您无需删除任何内容即可使其与 tensorflow 一起使用。 相反,如果您的系统中缺少 cuda-9.0,正如其他人已经指出的那样,那么您需要安装它,这是 tensorflow 正常工作的先决条件。

如果你已经安装了你的系统上支持CUDA 9.0和tensorflow抱怨libcublas.so.9.0如其他人所说的暴露再次,通过你的运行期间LD_LIBRARY_PATH环境变量的.bashrc使它指向/usr/local/cuda-9.0/lib64 。 即使对于 tensorflow 1.7,这也应该有效。

我尝试过但未能完成的是从源代码构建。 出于某种原因,bazel 总是出现错误退出。 如果您尝试使用 cuda-9.0/cuda-9.1 和 cudnn7 进行构建,它会抱怨 gcc7。 使用 gcc5 编译似乎工作正常,但最后我总是收到错误并且构建不成功。

我的问题是,是否有人设法使用 cuda-9.1/cuda-9.0 从源代码编译没有问题?

这对我有用:

从 NVidia 以前的版本部分下载 CUDA Toolkit 9.0。
然后:

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub 
sudo apt-get update
sudo apt-get install cuda-9.0

注意上面最后一行的 9.0。

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

我的设置
TensorFlow 1.7
cuDNN 7.1.2
Ubuntu 16.04

艾特米兹,
我有相同的设置,它也适用于我。

谢谢你的文章 :)

我有同样的情况。 我有 cuda 9.1,tensorflow 找不到 cuda 9.0 的库。

我已经使用命令安装了 cuda 9.0:sudo apt-get install cuda-libraries-9-0

那解决了我的问题。

安装 cuda 8 和 9.0 后,在.bashrc.profile设置LD_LIBRARY_PATH不起作用。 所以,我设置
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64在 pycharm 环境变量字段中,它可以工作。

以上适用于在 Ubuntu Server 17 上安装。即,

  • 安装 cuda-9.0(不是 9.1)
  • 用于 CUDA 9.0 的 cuDNN v7.1.2(2018 年 3 月 21 日)
  • 根据官方 tf 安装说明进行其他所有操作

比编译容易得多。

小心 conda 用户。 我遇到了同样的问题,摸索了两天,直到最后我发现 conda 使用了 libcudnn.so 的本地副本,位于:
/miniconda3/lib/libcudnn.so 指向 libcudnn.so.7 指向 libcudnn.so.7.0.5
我不记得是谁以及如何将它放在那里,但它几乎超载了系统默认的 libcudnn.so.7.1.2 !!!

一旦删除,一切都像魅力一样:
ubuntu 16.04 上的 tensorflow 1.7 或 1.8-nightly、cuda-9.1、cudnn-7.1.2

不知何故,我通过安装解决了这个问题:
cuda 9.1(来自包管理器),
cudnn 7.1 为 9.1
来自蟒蛇:
通过使用这个默认命令'conda install -c anaconda tensorflow-gpu'
cudatoolkit 9.0,
张量流 1.7,
张量流-GPU 1.7

我在我的 PC 上使用了 Antergos linux,GTX 1060。 它在我的笔记本(Xubuntu 18.04,GT 840m)中也能正常工作。 在我的笔记本中,我使用了:
cuda 9.1(来自 nvidia ppa),cudnn 7.1 for 9.1(来自 nvidia web),其余相同

谢谢@Suananda! 它的作用就像魔术一样。

如果您有旧版本的 CUDA,即使您安装了较新的 CUDA,库链接也可能指向旧库,尤其是如果您手动安装它。 尝试删除旧安装,然后 sudo ldconfig 更新动态链接。

还没解决!?

对于任何可能偶然发现的人,我已经发布了一个由 cuda 9.1 构建的最新 tensorflow 1.8.0-rc1 的社区轮。 你可以在这里找到它!

我找到原因是ldconf,ldconfig是一个动态链接库管理命令,目的是让系统使用动态链接库。

默认ldconf只搜索/lib和/usr/lib,以及配置文件/etc/ld列出的目录下的库文件。 所以。 配置文件

所以这一切都是由安装的CUDA路径中的CUDA动态库引起的,例如:/path/cuda-9.0/lib64或/path/cuda-9.0/lib。 (例如,我的 CUDA 安装在 /usr/local/cuda-9.0 中)

  1. 如果你安装了CUDA手册,那么安装后,你应该将cuda/lib64的路径添加到/etc/ld.so.conf文件中
    sudo echo "/usr/local/cuda-9.0/lib64/" >> /etc/ld.so.conf
    然后
    sudo ldconfig

    当然,您可以添加路径手册,例如:
    vim /etc/ld.so.conf
    然后在最后添加路径'/usr/local/cuda-9.0/lib64'。
    sudo ldconfig
    操作后,重新打开 ipython 或 pycharm ,
    将张量流导入为 tf
    哇,你会喜欢的!

  2. 如果您通过“dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb”等命令安装CUDA,它可能会自动将cuda lib路径添加到/etc/ld.so.conf。 但为了安全起见,请检查 /etc/ld.so.conf 并查看路径是否添加到其中。

@纽约清洁工
在 Ubuntu 上,有一个/etc/ld.so.conf.d/cuda-9-1.conf文件,其中包含:
/usr/local/cuda-9.1/targets/x86_64-linux/lib

这足够了还是我需要将目录/usr/local/cuda-9.1/lib64/到它?

@sebma
你应该给它添加/usr/local/cuda-9.1/lib64/路径, * .so 文件在 lib64 中

sudo bash -c "echo /usr/local/cuda/lib64/ >/etc/ld.so.conf.d/cuda.conf"
sudo ldconfig

来自https://gist.github.com/zhanwenchen/e520767a409325d9961072f666815bb8

@mashu好吧,另一个选择是社区提供预先构建的轮子。 如果您阅读上面的 2-3 个线程,您还会看到再次提到的内容。

@Suananda谢谢,它在 tensorflow conda 环境中对我有用。
建议官方修改安装指南“ https://www.tensorflow.org/install/install_linux#InstallingAnaconda”,Anaconda安装步骤4,从“pip install --ignore-installed --upgrade tfBinaryURL”改为“conda”安装 -c anaconda tensorflow-gpu"

Softlink 好像没有解决这个问题:

➜  cuda ls lib64 
libaccinj64.so                libcufftw_static.a     libnppial.so.9.2      libnppig_static.a    libnvblas.so.9.2
libaccinj64.so.9.2            libcuinj64.so          libnppial.so.9.2.88   libnppim.so          libnvblas.so.9.2.88
libaccinj64.so.9.2.88         libcuinj64.so.9.2      libnppial_static.a    libnppim.so.9.2      libnvgraph.so
libcublas_device.a            libcuinj64.so.9.2.88   libnppicc.so          libnppim.so.9.2.88   libnvgraph.so.9.2
libcublas.so                  libculibos.a           libnppicc.so.9.2      libnppim_static.a    libnvgraph.so.9.2.88
libcublas.so.9.0              libcurand.so           libnppicc.so.9.2.88   libnppist.so         libnvgraph_static.a
libcublas.so.9.2              libcurand.so.9.2       libnppicc_static.a    libnppist.so.9.2     libnvrtc-builtins.so
libcublas.so.9.2.88           libcurand.so.9.2.88    libnppicom.so         libnppist.so.9.2.88  libnvrtc-builtins.so.9.2
libcublas_static.a            libcurand_static.a     libnppicom.so.9.2     libnppist_static.a   libnvrtc-builtins.so.9.2.88
libcudadevrt.a                libcusolver.so         libnppicom.so.9.2.88  libnppisu.so         libnvrtc.so
libcudart.so                  libcusolver.so.9.2     libnppicom_static.a   libnppisu.so.9.2     libnvrtc.so.9.2
libcudart.so.9.2              libcusolver.so.9.2.88  libnppidei.so         libnppisu.so.9.2.88  libnvrtc.so.9.2.88
libcudart.so.9.2.88           libcusolver_static.a   libnppidei.so.9.2     libnppisu_static.a   libnvToolsExt.so
libcudart_static.a            libcusparse.so         libnppidei.so.9.2.88  libnppitc.so         libnvToolsExt.so.1
libcufft.so                   libcusparse.so.9.2     libnppidei_static.a   libnppitc.so.9.2     libnvToolsExt.so.1.0.0
libcufft.so.9.2               libcusparse.so.9.2.88  libnppif.so           libnppitc.so.9.2.88  libOpenCL.so
libcufft.so.9.2.88            libcusparse_static.a   libnppif.so.9.2       libnppitc_static.a   libOpenCL.so.1
libcufft_static.a             libnppc.so             libnppif.so.9.2.88    libnpps.so           libOpenCL.so.1.0
libcufft_static_nocallback.a  libnppc.so.9.2         libnppif_static.a     libnpps.so.9.2       libOpenCL.so.1.0.0
libcufftw.so                  libnppc.so.9.2.88      libnppig.so           libnpps.so.9.2.88    stubs
libcufftw.so.9.2              libnppc_static.a       libnppig.so.9.2       libnpps_static.a
libcufftw.so.9.2.88           libnppial.so           libnppig.so.9.2.88    libnvblas.so

还有:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python3.6/dist-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/lib/python3.6/imp.py", line 243, in load_module
    return load_dynamic(name, filename, file)
  File "/usr/lib/python3.6/imp.py", line 343, in load_dynamic
    return _load(spec)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

当我直接在 linux 环境中运行我的代码时,一切正常。 但是当我通过远程解释器在本地pycharm上运行时,遇到了问题: ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory. "Failed to load the native TensorFlow runtime."

导出路径=${PATH}:/usr/local/cuda-9.0/bin
导出 CUDA_HOME=${CUDA_HOME}:/usr/local/cuda:/usr/local/cuda-9.0
导出 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-9.0/lib64
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

如果使用 pycharm - 将其添加到解释器

f** 我只想使用 tensorflow1.8 和 cuda9.1 怎么样?

@dongzhuoyao那么问题是什么? 看看我上面的评论 6 个线程,你会在那里找到你的解决方案!

我猜这个问题再次出现在cuda 9.2tensorflow-gpu 1.8 。 在 virtualenv 中,我得到:

>>> import tensorflow as tf
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

我的/usr/local/cuda-9.2/lib64文件夹有以下 libcublas:

$ ls /usr/local/cuda-9.2/lib64 | grep libcublas
libcublas_device.a
libcublas.so
libcublas.so.9.2
libcublas.so.9.2.113
libcublas.so.9.2.88
libcublas_static.a

版本:

Ubuntu 16.04
cuda 9.2
cudnn 7.1.4
tensorflow-gpu 1.8.0

我们需要更新 tensorflow-gpu 才能使用 cuda 9.2。

另外,如果我要降级到 cuda 9.0,我必须先删除 cuda 9.2 还是直接安装 9.0? 我会有冲突的安装吗?

@mebble给你:链接。 那是 cuda 9.2 的 tf 1.8 轮子。

如果我要降级到 cuda 9.0,我是否必须先删除 cuda 9.2

不要降级。 安装您想要的任何其他版本,它们将在/usr/local/cuda-x.x

谢谢! 我忘了提到我使用python 3.5.2和 pip 10.0.1 。 我认为轮子适用于 python 3.6,所以安装不起作用。 你也有 3.5 的吗?

@kirk86在安装你给它的
我使用 CentOS 和 K80 GPU、cuda 9.2 和 cudnn v7.1

建议

据我所知,你可以有子包 xxx、yyy、zzz 等,并按如下方式安装它们

pip install mainpackage[xxx]

这样可以提供不同的共存后端。 Tensorflow 可以使用不同的选项构建,因此至少可以通过这种方式提供几个 cuda-toolkit 构建。

包的全部意义在于节省构建时间,但是为非常特定的一组库构建的包构建良好,但不起作用会适得其反。 一开始最好不要有这样的包。

@mebble只是为 python 3.6 创建一个

@pavan-08 在你的系统上安装 openmpi 也 nccl 2.x 无论是来自 nvidia 的最新版本。 我已经用大多数包和库编译了 tf,所以它可以用于 hdfs、kafta、aws 等。这就是为什么要问 libmpi.so,因为它来自 openmpi 库。

使用 cuda 9.2 和 tensorflow-gpu 1.8 我无法构建 tensorflow

声明的输出 'external/local_config_cuda/cuda/cuda/lib/libcudnn.so.7' 是一个悬空的符号链接

符号链接存在

版本:

Ubuntu 17.10
CUDA 9.2
cudnn 7.1.4
张量流-GPU 1.8.0

这对我有用(tensorflow-gpu==1.8.0 和 cuda 版本是 9.0,安装在 anaconda 中)

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/

建议来自: https :

@Jackiexiao是的,这就是我要说的。 我正在使用工作站,所以对我来说我需要做的就是使用 CUDA 9.0 而不是 9.2(因为安装了多个版本的 CUDA)

这对我有用:
因为 Tensorflow > 1.4 需要 CUDA 9,所以我卸载了所有 CUDA 版本:

  1. 须藤 rm -rf /usr/local/cuda*
  2. dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 须藤 dpkg --purge

安装 CUDA 9.0 和 CuDNN 7.0.x 并重新启动。

请参考CUDA、CuDNN 和 Tensorflow 的组合

发生此错误的主要原因是 Nvidia 驱动程序、CUDA、CuDNN 和 Tensorflow-gpu 的版本组合不正确
image

感谢你!

| |
杨康
|
|
邮箱: [email protected]
|

签名由网易邮箱大师定制

在 08/18/2018 08:00,Dhruv Srivastava 写道:

请参考 CUDA 和 CuDNN 的组合。

发生此错误的主要原因是 Nvidia 驱动程序、CUDA、CuDNN 和 Tensorflow-gpu 的版本组合不正确


您收到此消息是因为您发表了评论。
直接回复此邮件,在 GitHub 上查看,或将线程静音。

@dhruvhacks好。我认为人们应该使用正确版本的 cuda 安装正确版本的 tensorflow-gpu。

我在 Ubuntu 18.08 上,并在以下位置安装了 Cuda 9.0:

/usr/local/cuda-9.0

我决定寻找libcublas.so.9.0

# build search index
updatedb
# find the "missing" file
locate libcublas.so.9.0

这告诉我文件在/usr/local/cuda-9.0/lib64/stubs/libcublas.so.9.0 ,这帮助我意识到我有两个问题:在~/.bash_profile我设置了: export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64/ ,但我的文件在stubs目录,所以我需要使用:

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64/stubs/

最后, libcublas.so.9.0归 root 所有,所以我更改了文件的权限和所有者:

sudo chown -R MY_USER:MY_GROUP /usr/local/cuda-9.0/
sudo chmod -R 777 /usr/local/cuda-9.0/

一切都很好!

安装 cuda 8 和 9.0 后,在.bashrc.profile设置LD_LIBRARY_PATH不起作用。 所以,我设置
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64在 pycharm 环境变量字段中,它可以工作。

正是如此,非常感谢您解决了这个问题,我花了几天的时间来解决这个问题。 真的很感谢队友

当我使用PyCharm在远程服务器(aws 深度学习 ami)上调试我的代码时,我也遇到了这个问题。 cuda 版本是 9.0,cudnn 是 7.1.4,tensorflow 是 1.10.0(对于 gpu)。 我可以通过连接到我的服务器的终端正常导入 tensorflow,但无法在 PyCharm 的 python 控制台中导入 tensorflow。 问题出现在这个时候。 因此,我无法使用 PyCharm 进行调试...
我的解决方案是:在连接到您的服务器后在终端中输入此行

sudo ldconfig /usr/local/cuda/lib64

我引用了这个链接

@NYcleaner 非常感谢! 它有助于! 我发现只使用符号链接也可以。
须藤回声“/usr/local/cuda/lib64/”>> /etc/ld.so.conf
须藤ldconfig

这仍然是 Cuda 9.1 和 Tensorflow 1.11 的问题

cuda 10.0 张量流 1.11

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

为什么不直接安装 cuda-9-0?

  • 去这里: https :
  • 然后,对我来说:下载 deb(网络)
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys \
     http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-9-0

在 ubuntu 18.04 cuda 9-0 下(正式)不可用。 不过,它有效。

大家好,
我尽可能多地使用 PyTorch,但对于需要将(Keras)模型导出到 tensorflowjs 的特定项目,我不得不使用 tf. 唯一对我有用的解决方案是从源代码构建,在从 Ubuntu multiverse 安装 CUDA 之后,如下所述:

https://medium.com/@asmello/how -to-install-tensorflow-cuda-9-1-into-ubuntu-18-04-b645e769f01d

博纳机会!

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

愚蠢的解决方案

我已经安装了 Cuda 10 和最新版本的 Tensor Flow,但我收到了ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory ,我已经降级了,但我仍然收到这条消息......

我已经安装了 Cuda 10 和最新版本的 Tensor Flow,但我收到了ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory ,我已经降级了,但我仍然收到这条消息......

你能告诉我们操作系统版本和你发出的“降级”的确切命令吗?

我试过Deepin 15.8和Mint 19.1,稍后我要测试Windows 10。 命令pip install --upgrade tensorflow-gpu==version ,我尝试了版本:1.9.0、1.10.1、1.11.0 和 1.12.0。 cuda版本和驱动程序:

image

@Sphinxs ,在我看来,您有两种方法:a) 在本地重新编译 python 轮,以便它指向已安装的 cuda 版本或 b) 像我在 18.04 安装时所做的那样安装 cuda-9.0 ,并且几个月后它仍在工作。

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

这个人说得对。 可以编译 TF 以与更现代的 CUDA 版本一起使用......为什么不直接向大多数人提供tensorflow-gpu-cuda110包或一些临时的东西,直到库可以动态找出底层的 cuda 版本?

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

我烦死了!!!!

我烦死了!!!!

此评论不会为问题添加任何内容。 也没有人强迫任何人使用 TF,但是如果您真的需要并且无法使 pip 包工作,为什么不自己构建它呢? 这就是我在某个时候最终做的事情。 我看到这里也有社区支持的构建
https://github.com/tensorflow/tensorflow向下滚动。
也许为您的 GPU 构建并做出贡献?

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

我烦死了!!!!

这是一个问题页面。 请说明您的问题,以便解决它们,或者更好的是,帮助解决它们。

@raphaunix请问这个图表是从哪里来的?

我通过运行以下命令使 Tensorflow 1.11.0 正常工作:

conda create -n tf python=2
conda activate tf
pip install tensorflow-gpu==1.11
conda install cudatoolkit==9.0

我找到原因是ldconf,ldconfig是一个动态链接库管理命令,目的是让系统使用动态链接库。

默认ldconf只搜索/lib和/usr/lib,以及配置文件/etc/ld列出的目录下的库文件。 所以。 配置文件

所以这一切都是由安装的CUDA路径中的CUDA动态库引起的,例如:/path/cuda-9.0/lib64或/path/cuda-9.0/lib。 (例如我的 CUDA 安装在 /usr/local/cuda-9.0)

1.如果你安装了CUDA手册,那么安装后,你应该将cuda/lib64的路径添加到/etc/ld.so.conf文件中
sudo echo "/usr/local/cuda-9.0/lib64/" >> /etc/ld.so.conf
然后
sudo ldconfig
当然,您可以添加路径手册,例如:
vim /etc/ld.so.conf
然后在最后添加路径“/usr/local/cuda-9.0”。
然后更新它
sudo ldconfig
操作后,重新打开 ipython 或 pycharm ,
import tensorflow as tf
哇,你会喜欢的!

如果您通过“dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb”等命令安装CUDA,它可能会自动将cuda lib路径添加到/etc/ld.so.conf。 但为了安全起见,请检查 /etc/ld.so.conf 并查看路径是否添加到其中。

@jabalazs而不是conda install cudatoolkit==9.0我试过pip install cudatoolkit==9.0但这没有用,你知道为什么吗?

我发现我在 colab 上的运行时没有使用 GPU,这就是我出错的原因

更好的解决方案 - 删除 tensorflow,安装 pytorch
为什么 tensorflow 可以如此轻松地刹车?
为什么我不能安装并运行它?
为什么 pytorch 如此容易,而 tf 不可预测? wtf有毛病吗?

很好的解决方案@dodler ! 但我认为您缺少使这个伟大的建议易于通过 xD 遵循的命令。

pip uninstall tensorflow
pip install torch

快乐编码!

我在尝试使用 Thundersvm 在 Google Colab 上通过 GPU 加速 NuSVR 时遇到了同样的错误。
安装 Cuda 9.0 解决了我的问题。
只需遵循:

!wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-deb

!ls # Check if required cuda 9.0 amd64-deb file is downloaded

!dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-deb

!ls /var/cuda-repo-9-0-local | grep .pub

!apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub

!apt-get update

!sudo apt-get install cuda-9.0

此页面是否有帮助?
0 / 5 - 0 等级