【问题标题】:ImportError: libcublas.so.9.0: cannot open shared object fileImportError:libcublas.so.9.0:无法打开共享对象文件
【发布时间】:2018-07-03 20:22:04
【问题描述】:

目前我在 Gpu 支持系统中安装了 cuda 8.0 和 cuda 9.0。我在从 keras 模块导入时遇到了这个错误。它说无法加载本机 tensorflow 运行时。我收到的错误日志是:

Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/dist-
packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/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.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

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "Try1.py", line 11, in <module>
from keras.models import Sequential
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/__init__.py", line 3, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/utils/__init__.py", line 6, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/utils/conv_utils.py", line 3, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/backend/__init__.py", line 83, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/backend/tensorflow_backend.py", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 73, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/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.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


Failed to load the native TensorFlow runtime.

当我运行 nvcc --version 时,返回的 cuda 版本是,

Cuda compilation tools, release 8.0, V8.0.61

我阅读了一些类似的帖子,但无法解决我的问题。大多数情况下,我认为这是两个 cuda 版本之间的冲突。谁能告诉我如何解决这个问题?提前致谢。

【问题讨论】:

  • 您的 tensorflow 安装需要 CUDA 9
  • 我已经在 /usr/local/cuda-9.0/ 中安装了 cuda 9。 @talonmies
  • 但它没有找到它。它正在寻找 CUDA 8
  • @talonmies 知道如何将默认设置为 cuda 9.0
  • 这完全取决于您如何安装这两个版本以及您目前如何设置环境。没有唯一的答案

标签: python-3.x tensorflow cuda keras


【解决方案1】:

您需要更新您的LD_LIBRARY_PATH,使其指向/usr/local/cuda-9.0/lib64。 将以下行添加到您的 .bashrc 文件(或您使用的任何其他终端)

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

【讨论】:

  • 如果 CUDA 8 安装也在 PATH 中,这可能无济于事
  • 即使路径中有CUDA 8,也不会在目录中找到libcublas.so.9.0,会进一步查找CUDA 9目录。如果不是这种情况,请详细说明
  • 命令应该是export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/
  • 如果 CUDA 是通过 apt 安装的,它应该已经创建了一个指向 /usr/local/cuda 的符号链接。您可以尝试从cuda-9.0 中删除-9.0。无论是否有效,请发布您的结果。
  • 供以后参考,我的错误是ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory,我的解决方案是替换上面代码中的CUDA 10.0版本,即export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64/,问题解决了
【解决方案2】:

试试下面的代码

 pip3 install --upgrade tensorflow-gpu==1.4

在终端中输入此命令pip3 install --upgrade tensorflow-gpu==1.4 后,tensorflow 将降级到 1.4.0。这个bug是tensorflow 1.6.0引起的。

【讨论】:

  • 您能否在答案中添加更多信息。
  • 请重新检查答案。这个对我有用。 @MiBrock
  • 现在它搜索版本 8 的 libcublas。 ImportError:libcublas.so.8.0:无法打开共享对象文件:没有这样的文件或目录
  • 是的,我安装了最新版本(v1.7),它似乎只寻找cuda-9.0。 TensorFlow 开发人员应该修复安装...
【解决方案3】:

截至目前,Tensorflow 二进制文件不支持 Cuda 9.1。 所以解决方案可能只是从source 安装 Tensorflow。

当我为 Tensorflow 安装 Cuda 9.1+cuDNN 6 时,我也遇到了上述问题,这对我有用。

https://devtalk.nvidia.com/default/topic/1026198/cuda-setup-and-installation/cuda-9-0-importerror-libcublas-so-8-0

此外,您还有以下两种选择:

  1. CUDA 8.0 + Tensorflow - 最稳定的 CUDA 版本,适用于 Tensorflow 二进制文件。

  2. CUDA 9.0 + Tensorflow - 与 Tensorflow 二进制文件兼容的最新 CUDA 版本。

【讨论】:

    【解决方案4】:

    此问题与 Google 的 protobuf-compiler 有关,因为 tensorflow 无法找到共享对象文件,在本例中为 libcublas.so.9.0。

    构建最新版本的 protobuf (3.5. 0) 从源头上也没有帮助。对我有用的是通过 apt install protobuf-compiler 在 Ubuntu 16.04 上安装系统范围的 protobuf 编译器。并且,通过pip3 install protobuf安装python版本。我使用的是 CUDA 9.0,因为 9.1 还不兼容 tensorflow 的预构建二进制文件。

    您可以使用 protoc --version 检查系统范围的 protobuf 版本,该版本是 16.04 上的 2.6.1。 protoc python 版本是 3.5.2.post1。希望这可以帮助。我在使用早期版本的 tensorflow 和 CUDA 8 时遇到了类似的问题,并且记录了这个故障排除过程。使用相同的程序,我也可以使用 tensorflow 1.8.0。

    【讨论】:

      【解决方案5】:

      我遇到了这个错误,但它与 GPU 内存不足有关,尽管错误消息似乎没有直接关系。正如其他人所建议的那样,我尝试重新启动服务器,但我只获得了更多的迭代(时期)。为了解决这个问题,我从我的云提供商那里升级了一个更大的 GPU 服务器实例,仍然使用相同的服务器映像。

      我希望这可以帮助别人。

      【讨论】:

        【解决方案6】:

        Tensorflow 版本 >= 1.5 需要 CUDA 版本 > 8.0。所以如果你有 CUDA 8.0 版本,你可以将你的 tensorflow 版本降级到 1.4。

        pip install tensorflow-gpu==1.4

        【讨论】:

          【解决方案7】:

          每当您安装新版本的 cuda 时,您都需要检查可能已添加的永久路径。

          在终端运行中检查这个

          gedit ~/.bashrc
          

          如果您看到旧的 cuda 路径在那里,则需要将其更改为新路径。

          例如我的是:

          export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/lib/nvidia-384
          

          我同时更改了 cuda 路径和 nvidia 路径,因为我还将驱动程序升级为:

          export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/lib/nvidia-390
          

          希望对你有帮助:)

          【讨论】:

            【解决方案8】:

            从 Ubuntu 16.04 升级到 18.04 后,我遇到了这个问题。我已经安装了带有 Tensorflow 1.12.0 的 CUDA 9.1,而那个版本的 Tensorflow 需要 CUDA 9.0。当我尝试安装 CUDA 9.0 时,它破坏了我的视频驱动程序。

            幸运的是,我找到了安装 multiple CUDA libraries 的说明。到目前为止,我只需要下载安装程序脚本,使用--silent --toolkit --override 选项运行它,然后设置LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64。我还将/usr/local/cuda 的符号链接设置回/usr/local/cuda-9.1,但我不确定是否需要这样做。

            到目前为止,Tensorflow 运行良好。

            【讨论】:

              【解决方案9】:

              我试图在 Anaconda 环境中安装 tf 并且遇到了同样的问题。安装 CUDA 和 cuDNN 后,我必须先创建一个新环境,然后在该环境中创建 pip install tensorflow-gpu

              【讨论】:

                【解决方案10】:

                我通过以下步骤解决了:

                # Add NVIDIA package repository
                sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
                wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
                sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
                wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
                sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
                sudo apt update
                
                # Install CUDA and tools. Include optional NCCL 2.x
                sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
                    cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 \
                    libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
                
                # Optional: Install the TensorRT runtime (must be after CUDA install)
                sudo apt update
                sudo apt install libnvinfer4=4.1.2-1+cuda9.0
                

                【讨论】:

                  【解决方案11】:

                  我刚刚在 Google Colab 上遇到了同样的问题, 看来我们必须安装 Cuda 9.0 才能克服它。 (Cuda 9.2 不起作用)

                  请关注:

                  !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
                  

                  感谢Medium Post: Sifat Muhammad Abdullah

                  【讨论】:

                    【解决方案12】:

                    发生这种情况是因为系统正在寻找合适的 cuda 版本来运行训练。我在 conda 中以简单的方式解决了这个问题。

                    转到link 并找到您的 tensorflow 的 cuda 版本。

                    一旦找到,就执行这个。

                    搜索具体的cudatoolkit版本

                    conda search cudatoolkit
                    conda install cudatoolkit=*give_your_version_number_here*

                    接下来安装对应的cudnn

                    按conda search cudnn 搜索,这将显示您刚刚安装的cudatoolkit 对应的cudnn。

                    终于安装好了,

                    conda install cudnn=*your_version_number*

                    P.S -> 这就是 conda 的美妙之处。不要弄脏你的手,当你没有havta时;)

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2018-08-30
                      • 2019-08-08
                      • 1970-01-01
                      • 2011-12-23
                      • 1970-01-01
                      • 2013-04-21
                      • 2013-05-05
                      • 1970-01-01
                      相关资源
                      最近更新 更多