43 votes

Après avoir construit TensorFlow à partir des sources, je vois des erreurs dans libcudart.so et libcudnn.

Je suis en train de construire TensorFlow à partir du code source. La compilation semble réussir, mais lorsque mon programme TensorFlow invoque la commande import tensorflow l'une ou les deux erreurs suivantes apparaissent :

  • 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

62voto

Luis Valle Points 701

Premier pour l'erreur suivante :

ImportError : libcudart.so.8.0 : cannot open shared object file : Aucun fichier ou répertoire de ce type

assurez-vous que votre LD_LIBRARY_PATH comprend votre lib64 dans le chemin dans lequel vous avez installé votre paquetage cuda. Vous pouvez le faire en ajoutant un export dans votre .bashrc . Pour Omar, cela ressemblait à ce qui suit :

J'ai résolu ce problème en ajoutant le chemin de cuda à mon .bashrc.

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


Pour moi, j'ai dû faire la ligne d'Omar et aussi : export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/ parce que j'ai deux répertoires impliquant cuda (probablement pas le meilleur).


Deuxièmement Vous êtes sûr d'avoir installé cuDNN ? Notez que ce paquet est différent du paquet cuda normal. Vous devrez vous enregistrer, puis télécharger et installer le paquet à partir de la page suivante : https://developer.nvidia.com/cudnn


Troisièmement J'ai eu le même problème :

ImportError : libcudnn.5 : cannot open shared object file : Aucun fichier ou répertoire de ce type

Il s'avère qu'il n'y a pas libcudnn.5 dans mon /usr/local/cuda/lib64 o /usr/local/cuda-8.0/lib64 des répertoires. Cependant, j'ai un libcudnn.so.6.* fichier. Pour résoudre le problème, j'ai créé un lien souple :

ln -s libcudnn.so.6.* libcudnn.so.5

dans mon /usr/local/cuda/lib64 répertoire. Maintenant, tout fonctionne pour moi. Votre répertoire peut être différent si vous avez déjà cuDNN et votre libcudnn.so.6.* peut être une version différente, alors vérifiez-la.

41voto

GoingMyWay Points 4972

J'ai rencontré le même problème

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.

J'ai installé cudnn 6.0 alors qu'il a besoin de libcudnn.so.5 apparemment, il n'a pas pu trouver libcudnn.so.5 . Il semble que votre tensorflow ait besoin de cudnn 5.x, donc installez cudnn 5.x

CUDNN INSTALLATION

Assurez-vous que vous avez déjà installé cuda 8.0 et exporté le fichier PATH y LD_LIBRARY_PATH

Pour installer cudnn 5.x, essayez les commandes suivantes

Extraire les fichiers tgz

$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

Vérifiez les fichiers

$ 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

Ici, vous verrez 2 fichiers de liens symboliques, et il suffit de copier libcudnn.so.5.1.10 y libcudnn_static.a a /usr/local/cuda/lib64

Créer des fichiers de liens symboliques

$ 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

Copie cudnn.h sur include pour /usr/local/cuda/include

$ sudo cp cudnn.h /usr/local/cuda/include/

J'espère que cela vous aidera !

10voto

Alejandro Points 83

J'ai résolu ce problème en ajoutant le chemin de cuda à mon .bashrc.

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

Gardez à l'esprit que vous devez d'abord vous rendre sur la page nvidia Deep Learning, vous enregistrer et télécharger cuDNN, extraire et copier les fichiers des dossiers include et lib64 dans votre installation cuda.

6voto

mohamed haseeb Points 46

J'ai vu une erreur similaire (en bas de ce post), mais en me plaignant de libcudnn.so.6 au lieu de libcudart.so.8.0 (voir la note ci-dessous).

Solution :

  1. Télécharger Bibliothèque cuDNN v6.0 pour Linux ' :
    • Aller à https://developer.nvidia.com/rdp/cudnn-download
    • Cliquez sur ' Télécharger cuDNN v6.0 (27 avril 2017), pour CUDA 8.0 '
    • Ensuite, cliquez sur ' Bibliothèque cuDNN v6.0 pour Linux '. Un fichier (nommé ' cudnn-8.0-linux-x64-v6.0.tgz ') sera téléchargé.
  2. Suivez les instructions de Alexander Yau au-dessus de pour installer la bibliothèque cuDNN v6.0.

Note :

les instructions d'installation de Tensorflow (à la date du 20 août 2017) nécessite l'installation de cuDNN v5.1 mais mon installation de Tensorflow (en suivant les instructions de installation dans un virtualenv ) nécessite cuDNN v6.x (comme l'indique l'erreur). Je ne sais pas si c'est une erreur de ma part ou une erreur de la documentation de Tensorflow. Néanmoins, la solution ci-dessus a fonctionné pour moi.

Erreur rencontrée :

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.

3voto

Punit Vara Points 1085

Dès maintenant, tensor-flow supporte cuda-9.0

Faites les choses suivantes. J'espère que cela vous aidera :

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

Télécharger cuDNN pour 9.0 (Vous devez vous enregistrer avant de télécharger) https://developer.nvidia.com/rdp/form/cudnn-download-survey

$ sudo dpkg -i libcudnn7_7.1.2.21-1+cuda9.0_amd64.deb

Fermer tous les terminaux et ouvrir un nouveau

$ source activate tensorflow
$ python
>> import tensorflow as tf

Vous ne devriez plus avoir d'erreur après cela.

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