50 votes

ImportError: libcublas.so.9.0: impossible d'ouvrir le fichier d'objet partagé

actuellement, j'ai cuda 8.0 et cuda 9.0 est installé dans le Gpu système de soutien. Je suis tombé sur cette erreur lors de l'importation à partir de keras module. Il dit, comme le chargement a échoué natif tensorflow de l'exécution. Le journal des erreurs que j'ai reçu était:

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.

Quand je lance nvcc --version, la version cuda est retourné,

Cuda compilation tools, release 8.0, V8.0.61

J'ai lu sur certains post, mais ne parvenaient pas à résoudre mon problème. Surtout, je pense que c'est un affrontement entre deux cuda versions. Quelqu'un peut me dire comment résoudre ce problème? Merci à l'avance.

48voto

layog Points 3132

Vous devrez mettre à jour votre LD_LIBRARY_PATH , afin qu'il pointe vers le /usr/local/cuda-9.0/lib64 . Ajoutez la ligne suivante à votre fichier .bashrc (ou à tout autre terminal que vous utilisez)

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

6voto

daVincere Points 100

Le Tensorflow Binaires ne prennent pas en charge Cuda 9.1 dès maintenant. Donc, la solution pourrait être d'installer Tensorflow de source.

Moi aussi j'avais précédemment alors que j'avais installé Cuda 9.1+cuDNN 6 pour Tensorflow et c'est ce qui a fonctionné pour moi.

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

En outre, vous avez les deux options suivantes:

  1. CUDA 8.0 + Tensorflow - les plus de la version stable de CUDA qui fonctionne avec Tensorflow Binaires.

  2. CUDA 9.0 + Tensorflow - dernière version CUDA qui Tensorflow Binaires sont compatibles avec.

4voto

S. Theon Points 61

Essayez le code suivant

  pip3 install --upgrade tensorflow-gpu==1.4
 

Après avoir tapé cette commande pip3 install --upgrade tensorflow-gpu==1.4 dans le terminal, le flux de tenseurs va revenir à la version 1.4.0. Ce bug causé par tensorflow 1.6.0.

1voto

Rishabh Agrahari Points 817

La version Tensorflow> = 1.5 nécessite la version CUDA> 8.0. Donc, si vous avez la version 8.0 de CUDA, vous pouvez rétrograder votre version de tensorflow à 1.4.

pip install tensorflow-gpu==1.4

0voto

Ce problème est lié à Google protobuf-compilateur en raison de laquelle tensorflow ne parvient pas à trouver le fichier objet partagé, dans ce cas, libcublas.donc.9.0.

La construction de la dernière version de protobuf (3.5.0) à partir de la source n'a pas aider non plus. Ce qui a fonctionné pour moi a été d'installer le système à l'échelle de protobuf compilateur par apt install protobuf-compilateur sur Ubuntu 16.04. Et, installez la version de python par pip3 installer protobuf. Je suis à l'aide de CUDA de 9,0 9,1 n'est pas encore compatible avec tensorflow de binaires pré-compilés.

Vous pouvez vérifier le système à l'échelle de protobuf version à l'aide de protoc --version qui est 2.6.1 sur 16.04. Le protoc version de python est 3.5.2.post1. Espérons que cette aide. J'ai eu un problème similaire, à l'aide de versions antérieures de tensorflow et CUDA 8, et a documenté cette procédure de dépannage. En utilisant la même procédure, je suis en mesure d'utiliser tensorflow 1.8.0 trop.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X