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
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.
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
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!
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.
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:
- 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é.
- 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.
à 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.
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"
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.
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
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
deuxièmement, installez le cuDNN de ici
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
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:
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
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.
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 Dockersont 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