ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory

简介: ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory

错误:

今天想在实验室的GPU服务器-我的docker容器里使用tensorflow-gpu【安装直接pip install tensorflow-gpu】,结果报错:

1. ImportError: Traceback (most recent call last):
2.   File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
3.     from tensorflow.python.pywrap_tensorflow_internal import *
4.   File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
5.     _pywrap_tensorflow_internal = swig_import_helper()
6.   File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
7.     _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
8.   File "/root/anaconda3/lib/python3.6/imp.py", line 243, in load_module
9.     return load_dynamic(name, filename, file)
10.   File "/root/anaconda3/lib/python3.6/imp.py", line 343, in load_dynamic
11.     return _load(spec)
12. ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
13. 
14. 
15. Failed to load the native TensorFlow runtime.

原因很简单:tensorflow和docker里的cuda版本不对应:

1. Latest TensorFlow supports cuda 8-10. cudnn 6-7.
2. Each TensorFlow binary has to work with the version of cuda and cudnn it was built with. If they don't match, you have to change either the TensorFlow binary or the Nvidia softwares.
3. Official tensorflow-gpu binaries (the one downloaded by pip or conda) are built with cuda 9.0, cudnn 7 since TF 1.5, and cuda 10.0, cudnn 7 since TF 1.13. These are written in the release notes. You have to use the matching version of cuda if using the official binaries.
4. If you don't like to change your Nvidia software, you can:
5. (1) Use a different version of TensorFlow
6. (2) Use non-official binaries built by others. e.g.: https://github.com/mind/wheels/releases, https://github.com/hadim/docker-tensorflow-builder#builds,
7. https://github.com/inoryy/tensorflow-optimized-wheels
8. (3) Build the binaries by yourself from source with your version of Nvidia software.

安装好对应的版本就好了:更多请参阅这篇文章:https://blog.csdn.net/qq_36396104/article/details/89165185

1. tensorflow-gpu v1.9.0 | cuda9.0 |  cuDNN7.1.4可行  | 备注:7.0.4/ 7.0.5/ 7.1.2不明确
2. 
3. tensorflow-gpu v1.8.0 | cuda9.0 |  cuDNN  不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
4. 
5. tensorflow-gpu v1.7.0 | cuda9.0 |  cuDNN  不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
6. 
7. tensorflow-gpu v1.6.0 | cuda9.0 |  cuDNN  不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
8. 
9. tensorflow-gpu v1.5.0 | cuda9.0 |  cuDNN  不明确 | 备注:7.0.4/ 7.0.5/ 7.1.2/ 7.1.4
10. 
11. tensorflow-gpu v1.4.0 | cuda8.0 |  cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知 
12. 
13. tensorflow-gpu v1.3.0 | cuda8.0 |  cuDNN 6.0 | 备注:6.0正常使用, 7.0.5不能用,5.1未知 
14. 
15. tensorflow-gpu v1.2.0 | cuda8.0 |  cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知
16. 
17. tensorflow-gpu v1.1.0 | cuda8.0 |  cuDNN 5.1 | 备注:5.1正常使用, 6.0/ 7.0.5 未知

步骤:

1、查看cuda版本:

1. cat /usr/local/cuda/version.txt #shows CUDA Version 9.0.176
2. or
3. nvcc -V

2、安装对应版本的tensorflow【我的是9.0】:

pip install tensorflow-gpu==1.7.0

 

AIEarth是一个由众多领域内专家博主共同打造的学术平台,旨在建设一个拥抱智慧未来的学术殿堂!【平台地址:https://devpress.csdn.net/aiearth】 很高兴认识你!加入我们共同进步!


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
4月前
|
应用服务中间件 Shell 网络安全
nginx安装提示 libssl.so.3: cannot open shared object file: No
【8月更文挑战第1天】### 原因 未将安装的ssl中的`libssl.so.3`链接到`/usr/lib`导致缺失。 ### 解决方案 1. 检查openssl是否已安装,若为低版本则需重装。 ```sh whereis openssl
2305 6
|
4月前
|
Ubuntu
Ubuntu22.04,AOSP编译报错: libncurses.so.5: cannot open shared object file: No such file
本文描述了在Ubuntu 22.04系统上编译AOSP时遇到的`libncurses.so.5`缺失错误,并提供了通过安装相应库解决该问题的步骤。
544 0
|
5月前
|
关系型数据库 MySQL
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
477 2
|
2天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
127 4
|
2月前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
111 20
|
7月前
|
Java
Java Object 类
5月更文挑战第16天
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
3月前
|
Python
类与面向对象编程(Object-Oriented Programming, OOP)
类与面向对象编程(Object-Oriented Programming, OOP)
25 0
|
4月前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
50 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)