Après avoir construit TensorFlow de la source, voir libcudart.erreurs so et libcudnn

je construis TensorFlow du code source. La construction semble réussir; cependant, lorsque mon programme TensorFlow invoque import tensorflow , 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
41
demandé sur Barry Rosenberg 2017-02-03 01:14:54

12 réponses

First , pour l'erreur suivante:

importateur: libcudart.alors?8.0: impossible d'ouvrir un fichier d'objet partagé: pas de tel fichier ou répertoire

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

j'ai corrigé ceci en ajoutant simplement le chemin cuda à mon.bashrc

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


pour moi, je devais 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ème , êtes-vous tu es sûr d'avoir installé cuDNN? Notez que c'est différent du paquet cuda normal. Vous devez vous inscrire, puis télécharger et installer le paquet à partir de la page suivante: https://developer.nvidia.com/cudnn


troisième , j'ai eu ce même problème:

importateur: libcudnn.5: impossible d'ouvrir le fichier d'objet partagé: pas de tel fichier ou répertoire

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

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

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

60
répondu Luis Valle 2017-03-31 15:07:03

je suis tombé sur la même question

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 ne pouvait pas 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 PATH et 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érifier 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 et libcudnn_static.a à /usr/local/cuda/lib64

Faire lien symbolique fichiers

$ 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 include répertoire de /usr/local/cuda/include

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

espérons qu'il vous aidera!

38
répondu GoingMyWay 2017-09-18 07:47:40

j'ai corrigé ceci en ajoutant simplement le chemin cuda à mon.bashrc

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

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

10
répondu omarc7 2017-03-14 07:01:44

j'ai vu une erreur similaire (bas de ce post), mais se plaindre de libcudnn.alors?6 au lieu de libcudart.alors?8.0 (Voir note ci-dessous).

Solution:

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



Remarque:

les instructions d'installation de Tensorflow (à compter du 20/août/2017) exigent l'installation de cuDNN v5.1 , mais mon installation Tensorflow (suivant les instructions pour installation dans un virtualenv ) requis cuDNN v6.x (comme indiqué par le message d'erreur). Je ne sais pas si c'est une erreur de mon côté ou une erreur de documentation 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.
5
répondu mohamed haseeb 2017-08-29 22:56:49

à partir de Maintenant tensor-flow soutient cuda-9.0

faites les choses suivantes. Espérons que cela aide :

$ 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 inscrire 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 Nouveau

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

vous ne devriez pas obtenir d'erreur après cela.

3
répondu Punit Vara 2018-03-23 17:10:55

mystérieusement, mon libcudnn.so.5 a été installé à ~/cuda/lib64 . Pour les gens comme moi, vous devez changer

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/cuda/lib64"

à

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/yourusername/cuda/lib64"
2
répondu Michael Ma 2017-08-11 09:12:46

les erreurs précédentes sont typiquement causées par le fait de ne pas spécifier de numéro de version pour le SDK Cuda ou cuDNN lorsque vous exécutez le script configure . En d'autres termes, lors de l'exécution du script configure , spécifiez toujours un numéro de version en réponse aux deux questions suivantes:

  • Please specify the Cuda SDK version you want to use, e.g. 7.0.
  • Please specify the cuDNN version you want to use.

Ne pas accepter les valeurs par défaut du système.

1
répondu Barry Rosenberg 2017-02-02 22:18:03

sur MacOS, ce problème est souvent causé par le fonctionnement de bazel dans un environnement de bac à sable, ne respectant donc pas le LD_LIBRARY_PATH défini dans votre shell local. Je n'entrerai pas dans le mérite de l'intégration profonde du bac à sable dans un outil de construction.

la solution simple est de relier symétriquement les bibliothèques dans /usr/local/lib.

cd /usr/local/lib && ln -s ../cuda/lib/libcudart.8.0.dylib

1
répondu Adnan Y 2017-04-13 08:44:23

D'abord, installez la bibliothèque CUDA (version 7.5) de ici

Instructions D'Installation: 1 - sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb 2 - sudo apt-get update 3 - sudo apt-get install cuda

enter image description here

deuxièmement, installez le cuDNN de ici enter image description here

en Troisième lieu, l'exportation cuDNN chemin:

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

dans le cas où vous avez une erreur comme " le paquet libcudnnX doit être réinstallé ", suivez ces étapes ici

1
répondu Wesam Na 2017-08-21 09:50:35

vérifier les NVIDIA exigences pour exécuter TensorFlow avec un support GPU ( link ):

  • CUDA® Toolkit 8.0

  • Les pilotes NVIDIA associée avec CUDA Toolkit 8.0

  • cuDNN v6.0

  • carte GPU avec CUDA Calculer Capacité 3.0 ou plus

  • La libcupti-dev bibliothèque, qui est la NVIDIA CUDA Profil de l'Interface des Outils

j'ai installé le cuda v5.1 et le message ci-dessous demeure toujours:

ImportError: libcudart.so.8.0: cannot open shared object file:
  No such file or directory

j'ai donc été énervé parce que tout a l'air bien, donc j'ai décidé de vérifier mon GPU avec la commande (sur Linux):

glxinfo | grep GeForce

et j'ai remarqué que mon NVIDIA GPU n'est pas supporté:

OpenGL renderer string: **GeForce GTX 560M**/PCIe/SSE2

dans ce lien vous pouvez trouver une liste, comme cela:

enter image description here

donc ma solution était d'utiliser le flux tenseur sans support GPU. Donc je le fais:

pip uninstall tensorflow-gpu

j'installe sans support:

pip install tensorflow
1
répondu Andre Araujo 2018-01-19 01:53:35

TensorFlow 1.2.1 est compatible avec cuDNN 5.1, mais pas encore avec 6.0. Donc, il suffit d'installer cuDNN 5.1. En plus, vous semblez manquer CUDA 8.0.

0
répondu Bohumir Zamecnik 2017-07-31 11:33:46

Problème général lié au GPU, CUDA, et Docker:

A. si vous avez affaire à l'apprentissage automatique/ déploiement lié à l'apprentissage en profondeur, utilisez nvidia-docker et non native-docker. Pour installer nvidia-docker suivre ces étapes simples.

Les conteneurs Docker

sont agnostiques à la plate-forme, mais aussi à la quincaillerie. Cela présente un problème lors de l'utilisation de matériel spécialisé tel que NVIDIA GPUs qui nécessitent des modules du noyau et des bibliothèques au niveau de l'utilisateur pour fonctionner. Par conséquent, Docker ne supporte pas nativement les GPU NVIDIA dans les conteneurs.

B. si vous voulez accéder à GPU avec docker, ne jamais construire un conteneur à partir de zéro, vous serez frit avec un certain nombre d'erreurs. Au lieu de cela, il suffit d'utiliser n'importe quel conteneur de NVIDIA-Docker hub. Choisissez une image spécifique, copiez son fichier Dockerfile et lancez sudo nvidia-docker build -t happyapp . . [happyapp est votre nouveau nom d'application]. Dans 5 min vous aurez votre conteneur prêt (dépend de la vitesse du réseau :p).

C. ne téléchargez jamais un NVidia-docker ayant une version cuda/cudnn si vous voulez installer et exécuter Tensorflow dessus. Si vous le faites, vous obtiendrez libcudnn.alors?6 or libcudnn.alors?9 or libcusolver.alors?8.0 erreurs liées et vous aurez du mal à contourner ces erreurs. Au lieu de cela utilisez juste Tensorflow pré-construit Le panneau de l'image: sudo nvidia-docker run -it tensorflow/tensorflow:latest-gpu /bin/bash

0
répondu Patel Sunil 2018-07-24 10:26:31