web-dev-qa-db-fra.com

TensorFlow sous Windows: "Impossible d'ouvrir la bibliothèque CUDA cudnn64_5.dll"

Tensorflow vient de publier le support Windows. J'ai installé la version gpu ainsi que CUDA 8.0 et python 3.5. Cependant, après l’importation du tensorflow, j’ai eu l’erreur suivante:

>>> import tensorflow
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN DSO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally

Quelqu'un peut aider? Merci!

17
Alex

TL; DR: Pour utiliser cuDNN avec TensorFlow, le fichier cudnn64_5.dll doit se trouver dans un répertoire qui se trouve dans votre variable d’environnement %PATH%. Notez que cuDNN est un téléchargement séparé à partir de CUDA et que vous devez télécharger la version 5.1 de cuDNN.

Tout d’abord, notez que le fichier nuCDN n’est pas distribué avec le reste de la boîte à outils CUDA, vous devrez donc le télécharger séparément depuis le site Web de NVIDIA . Sous Windows, il est distribué sous forme d'archive Zip. Vous devez donc l'extraire et rechercher le répertoire contenant cudnn64_5.dll. Par exemple, si vous l'extrayez dans C:\tools\cuda, la DLL sera dans C:\tools\cuda\bin\cudnn64_5.dll. Enfin, vous pouvez l'ajouter à votre chemin en tapant ce qui suit à la commande Invite:

C:\> set PATH=%PATH%;C:\tools\cuda\bin
C:\> python
...
>>> import tensorflow as tf
24
mrry

J'ai essayé pip3 install --upgrade tensorflow après tensorflow-gpu et cela a bien fonctionné.

Je pense que c'est un problème uniquement lorsque vous essayez directement pip3 install --upgrade tensorflow-gpu.

1
Raghav Manikandan

J'ai eu ce problème et plusieurs tentatives ont été nécessaires pour le résoudre .. Cette réponse s'applique à Python 64 sous Windows 64 J'ai également installé VS2017 avec Python 3.6.

À partir d'un ordinateur Windows 64 vierge Installez Visual Studio 2015 (remarque: PAS vs2017 - du moins pas encore). L'édition communautaire est gratuite. Assurez-vous d'installer le compilateur C++. Vous en aurez besoin pour compiler les futures bibliothèques Python.

Cela résoudra également tous les problèmes liés à msvcp140.dll ou msvcrt * .dlls. Sinon, vous pouvez installer le VC redistribuable (mais je recommande plutôt d’installer VS2015 car cela vous permettra de compiler et d’installer les futures bibliothèques Python).

Ensuite, installez VS2017 et cette fois-ci, sélectionnez également Python et Data Learning (le scikit). Ceci impliquera par défaut d'installer Anaconda avec Python 3.6 (construit avec VS2015). Il y a aussi quelques fonctionnalités utiles 

* Assurez-vous également que vous avez une carte Nvidia compatible (voir les réponses précédentes)

Assurez-vous ensuite que les derniers pilotes Nvidia sont installés sur votre ordinateur.

Assurez-vous ensuite que vous avez installé les bibliothèques Nvidia mentionnées par Google et d’autres, notamment les corbeilles Cuda.

* À partir de tensorflow 1.2, Python 3.6 est pris en charge, de sorte que les remarques sur la création d'un environnement Python 3.5 ne sont plus nécessaires

Il y a quelques problèmes que j'ai rencontrés avec tensorflow 1.2. J'ai aussi essayé tensorflow 1.31rc2 dans mon environnement

_ {Problème n ° 1 - Les pare-feu (pour ceux qui se trouvent derrière un pare-feu))}

Cela empêchera les installations via "pip install" Pour résoudre ce problème, ajoutez --trusted-Host pypi.python.org 

Par exemple

pip installe tensorflow-gpu --trusted-Host pypi.python.org

Problème n ° 2 - Mise à niveau vers numpy 1.13.1

L'installation de tensorflow entraînera une mise à niveau vers une version incompatible de numpy 1.13.1 (au moins sur ma machine Windows). Pour résoudre ce problème, téléchargez la roue à http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy recherchez numpy-1.13.1 + mkl-cp36-cp36m-win_AMD64. whl

Installez cette roue avant en installant tensorflow. Cela empêchera tensorflow d’installer une version incompatible du paquet numpy 1.13.1.

NOTE: voir comment installer des roues dans d'autres postes (pip install fullpath_of_wheel)

REMARQUE: si vous avez déjà installé tensorflow, veillez à forcer une mise à niveau à l'aide de l'option --upgrade avec pip install).

Problème n ° 3 - Les paquets Nvidia cuda situés à différents endroits}

Pour vérifier si vous disposez des packages CU * .DLL appropriés, utilisez la commande "where" (à partir d'une invite de commande C: \).

où cublas64_80.dll 

où cudnn64_5.dll 

où cufft64_80.dll 

où nvcuda.dll 

où curand64_80.dll

où cusolver64_80.dll

Si votre machine est comme la mienne, vous trouverez ces dll à plusieurs endroits et parfois, elles n'existent même pas. Par exemple, cublas64_80.dll a été trouvé dans mon répertoire c:\program files\Anaconda3 nvcuda.dll dans mon c:\system32\windows et ainsi de suite. Si vous avez installé Matlab, il aura sa propre version. CNTK a aussi ses propres versions. Nvidia les mettra dans un autre répertoire. C'est encore un autre problème. Comme mentionné par d'autres, certaines des DLL dont vous avez besoin sont fournies par Nvidia dans un fichier Zip.

Au lieu d'essayer de réparer vos chemins, je vous recommande d'essayer d'abord

Collectez les 6 dll mentionnés ci-dessus et placez-les dans un répertoire tel que c:\tfexperiment

Puis cd dans c:\tfexperiment

exécutez python.exe à partir de cet emplacement. Windows va maintenant chercher les DLL dans le chemin actuel

maintenant, une fois les charges python tapez

import tensorflow en tant que tf

cela devrait fonctionner pour vous (j'espère). C'était la seule façon pour moi de le faire fonctionner sur ma machine. Si vous en arrivez là, vous pouvez simplement ajouter c:\tfexperiment comme premier chemin dans la variable d’environnement du chemin. Ou vous pouvez trouver le bon chemin.

Si cela ne fonctionne toujours PAS, vous pouvez aller plus loin en téléchargeant procmon.exe à partir de Microsoft. Exécutez procmon.exe. Filtrez sur l'exécutable python.exe (désolé, je n'ai pas le temps d'expliquer comment utiliser procmon). Revenez maintenant à votre invite python et tapez à nouveau "import tensorflow en tant que tf". Procmon devrait avoir plusieurs lignes d’information. Vous voudrez peut-être filtrer sur loadimage. Cela vous indiquera les dll chargées. Notez que les extensions .pyd sont également des DLL. Le dernier fichier .dll chargé (ou non chargé) est probablement celui qui a posé problème.

1
Dan Bricklin

En plus des réponses ci-dessus, assurez-vous d'avoir téléchargé la version prise en charge de cuDNN . Actuellement, TensorFlow prend en charge l'ancienne version de cuDNN v.5.1, tandis qu'une nouvelle version de cuDNN 6.0 est disponible sur le site Nvidia. J'ai eu de telles erreurs avec 6.0. Quand je suis revenu à la version 5.1, tout a fonctionné.

1
Andrey Kurapov

Assurez-vous également qu'il n'y a pas de cudnn64_5.dll supplémentaire (de la version incorrecte) dans un autre chemin.

Par conséquent, si vous avez déjà inséré DLL dans ...\CUDA\v8.0\bin, rappelez-vous que vous avez mis et pas une version plus récente dans ...\CuDNN\v5.1\bin sans supprimer l'ancienne de l'autre répertoire.

0
michaelosthege

Je viens de télécharger le fichier cuda.dll sur ce site: https://developer.nvidia.com/cudnn

puis déplacé le dossier décompressé vers le reste de mes bibliothèques anaconda.

J'utilise pycharm, il était donc facile de voir où toutes les bibliothèques externes étaient stockées dans anaconda. J'espère que cela t'aides!

0
user4679594

Comme dans mon test, j'ai constaté que TF 1.2 prend en charge cudnn 64_5 et TF 1.3 prend en charge cudnn 64_6. J'espère que cela aidera. :)

0
wiwengweng

Vous devez télécharger cudnn de votre système et l’extraire dans CUDA_PATH.

Mon CUDA_PATH est C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

0
Dev Ross

Vous pouvez également placer cuda64_5.dll dans le répertoire C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin et tout fonctionnera bien.

Vous pouvez utiliser l'interface graphique du dossier et charger le fichier .dll dans le répertoire. Ensuite, vous n'avez pas besoin de définir le PATH à chaque fois que vous utilisez Tensorflow.

0
Lucid Rage

Cela m'a pris beaucoup pour Dan Bricklin
J'ai finalement réussi à prendre les mêmes stpes mais dans l’ordre.

  1. Suppression du flux de tensor précédent de mon environnement conda. 

  2. Installé CUDA v9.1 pour Windows 8 (installation standard avec la version par défaut de VisualStudio) et ajouté "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1" à le chemin.

  3. Téléchargé et extrait cudnn-9.1-windows-7-x64, il est déplacé dans "Fichiers de programme" et l'a ajouté au chemin "C:\Program Files\cuda\bin".

  4. Tensorflow installé avec pip dans mon environnement conda "pip install --ignore-installed --upgrade tensorflow".
0
UrielUVD

Pour ceux d'entre vous qui atterrissent ici à cause de:

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND DSO.

Vous devez ajouter le chemin régulier CUDA. Je ne sais pas pourquoi ils ne les ont pas simplement rassemblés en un seul téléchargement. Très stupide.

C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
0
TOBlender

Et vous pouvez vérifier votre variable d'environnement de cette façon:

import os
print("Environmental variable:", os.environ["PATH"])
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;

Mon chemin_CUDA est "D: /CUDA/v8.0/bin" et je ne trouve pas mon chemin_CUDA ici. Vous trouverez votre fichier manquant ici (tel que "cublas64_80.dll", "cudnn64_5.dll", etc.). Le principe est que vous avez fini d'installer votre CUDA.

Si vous ne trouvez pas votre chemin CUDA dans la variable d'environnement, vous pouvez ajouter votre chemin CUDA manuellement: (L'ordre du code suivant est très important. Ajouter le chemin CUDA avant d'importer TensorFlow.)

import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;" 
import tensorflow as tf

Ou vous pouvez ajouter votre chemin_CUDA dans CMD temporairement:

set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py

Cela fonctionne sur mon ordinateur portable (Windows10, Python3.6, Tensorflow-gpu == 1.5) . Je pense que ces deux manières sont des solutions simples.

0
1943 Yonv