TensorFlow sur Windows: "impossible d'ouvrir le CUDA de la bibliothèque cudnn64 5.DLL"
Tensorflow vient de libérer le support de windows. J'ai installé la version gpu et CUDA 8.0 et python 3.5. Cependant, après avoir importé le tensorflow, j'ai eu l'erreur suivante:
>>> import tensorflow
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executordso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executordso_loader.cc:119] Couldn't open CUDA library cudnn64_5.dll
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executorcudacuda_dnn.cc:3459] Unable to load cuDNN DSO
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executordso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executordso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:tf_jenkinshomeworkspacerelease-windevicegpuoswindowstensorflowstream_executordso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally
quelqu'un Peut-il aider? Merci!
12 réponses
TL;DR: pour utiliser cuDNN avec TensorFlow, le fichier cudnn64_5.dll
doit être dans un répertoire qui est dans votre
tout d'abord, notez que cuDNN n'est pas distribué avec le reste de la boîte à outils CUDA, vous aurez donc besoin de le télécharger séparément de le site web de NVIDIA. Sur Windows, il est distribué comme une archive ZIP, donc vous devez extraire et de trouver le répertoire contenant cudnn64_5.dll
. Par exemple, si vous extrayez C:\tools\cuda
, la DLL sera en C:\tools\cuda\bin\cudnn64_5.dll
. Enfin, vous pouvez l'ajouter à votre chemin d'accès en tapant la commande suivante à l'invite:
C:\> set PATH=%PATH%;C:\tools\cuda\bin
C:\> python
...
>>> import tensorflow as tf
en plus des réponses ci-dessus, assurez-vous que vous avez téléchargé la version supportée de cuDNN. Actuellement TensorFlow supporte le cuDNN v. 5 plus ancien.1 tandis qu'il y a un nouveau cuDNN 6.0 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é.
- Check TensorFlow requirements here: https://www.tensorflow.org/install/install_windows
- Téléchargez la version supportée de cuDNN ici: https://developer.nvidia.com/rdp/cudnn-download
j'ai eu ce problème et il m'a fallu plusieurs tentatives pour le résoudre. Cette réponse s'applique à Python 64 sous Windows 64 J'ai aussi installé VS2017 avec Python 3.6
à partir D'une machine Windows 64 propre Installer Visual Studio 2015 (note: Pas vs2017 -- du moins pas encore). L'édition communautaire est gratuite. Assurez-vous d'installer le compilateur C++. Vous en aurez besoin pour compiler de futures libs python.
ceci nettoiera également tout problème avec msvcp140.dll ou msvcrt*.DLL. Vous pouvez aussi installer le VC redistribuable (mais je recommande d'installer VS2015 à la place car cela vous permettra de compiler et d'installer les futures bibliothèques python).
ensuite, installez VS2017 et cette fois, sélectionnez Python and Data Learning (le scikit). Par défaut, vous installerez 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 le précédent réponses)
alors assurez-vous que les pilotes Nvidia les plus récents sont installés sur votre ordinateur.
alors assurez-vous que vous avez installé les bibliothèques Nvidia mentionnées par Google et d'autres y compris les bacs Cuda.
* à partir de tensorflow 1.2, Python 3.6 est supporté de sorte que les notes 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é avec tensorflow 1.2. J'ai aussi essayé tensorflow 1.31rc2 dans mon environnement
Problème n ° 1 -- pare-feu (pour ceux qui sont derrière un pare-feu)
ceci empêchera les installations via " pip install" Pour corriger cela, ajouter --confiance-accueil pypi.python.org
Par exemple
pip install tensorflow-gpu --de confiance-accueil pypi.python.org
problème #2 -- Mise à niveau vers numpy 1.13.1
installation de tensorflow mise à jour vers une version incompatible de numpy 1.13.1 (du moins sur ma machine windows). Pour corriger cela, téléchargez la roue àhttp://www.lfd.uci.edu / ~gohlke/pythonlibs / #numpy cherchez numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl
installez cette roue avant installation de 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)
NOTE: Si vous avez déjà installé tensorflow, assurez-vous de forcer une mise à jour en utilisant l'option --upgrade avec pip install)
Problème n ° 3 -- Nvidia cuda paquets dans des endroits différents
pour tester si vous avez la bonne CU*.Les paquets DLL utilisent la commande" où " (d'une invite de commande C:\ command)
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 dlls à plusieurs endroits et parfois ils n'existent même pas. Par exemple, cublas64_80.dll a été trouvé dans mon c:\program fichiers \ anaconda3 répertoire 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, certains des DLLs dont vous avez besoin sont fournis par Nvidia dans un fichier zip.
au Lieu d'essayer de réparer votre chemin, je vous recommande d'essayer cette première place
collecter les 6 dlls mentionnés ci-dessus et les placer dans un répertoire tel que: c:\tfexperiment
puis cd en c:\tfexperiment
exécuter python.exe à partir de cet emplacement. Windows va maintenant chercher les dlls dans le chemin actuel d'abord
maintenant, une fois que python charges type
importer tensorflow que tf
il doit travailler pour vous (je l'espère). C'était le seul moyen pour que ça marche sur ma machine. Si vous arrivez si loin, vous pouvez simplement ajouter c:\tfexperiment comme votre premier chemin dans la variable d'environnement path. Ou vous pouvez trouver le bon ordre de chemin.
si cela ne fonctionne toujours pas, vous pouvez aller un peu plus loin en téléchargeant procmon.exe de Microsoft. Exécuter procmon.EXE. Filtre sur l'exécutable python.exe (désolé je n'ai pas le temps d'expliquer comment utiliser procmon). Maintenant, retournez à votre invite python et tapez à nouveau "importer tensorflow as tf". procmon devrait avoir plusieurs sources d'information. Vous pouvez filtrer sur loadimage. Ceci vous indiquera quels dlls il charge. Notons que .les extensions pyd sont aussi des DLLs. La dernière .dll qui chargé (ou n'a pas chargé) est probablement celui qui a causé des problèmes.
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 de CUDA. Je ne sais pas pourquoi ils ne les ont pas mis ensemble comme un seul téléchargement. Très bête.
C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
assurez-vous Également qu'il n'y a aucun frais supplémentaire cudnn64_5.dll
(de la mauvaise version) assis dans un autre chemin.
donc si vous mettez la DLL dans ...\CUDA\v8.0\bin
dans le passé, rappelez-vous que vous avez mis et ne mettez pas une nouvelle version dans ...\CuDNN\v5.1\bin
sans enlever l'ancienne de l'autre répertoire.
je viens de télécharger le cuda.dll fichier du site:https://developer.nvidia.com/cudnn
et puis j'ai déplacé le dossier unzipped à l'endroit où étaient les autres bibliothèques de mon anaconda.
j'utilise pycharm, donc il était facile de voir où toutes les bibliothèques externes étaient stockées dans anaconda. Espérons que cette aide!
Essayé pip3 install --upgrade tensorflow
après tensorflow-gpu
et il a bien fonctionné.
je pense que c'est un problème uniquement lorsque vous tentez pip3 install --upgrade tensorflow-gpu
directement.
comme dans mon test, J'ai trouvé que TF 1.2 supporte cudnn 64_5, et TF 1.3 supporte cudnn 64_6. Espérons que cela aidera. :)
Vous pouvez aussi mettre le cuda64_5.dll dans la C:\Program fichiers\NVIDIA GPU Computing Toolkit\CUDA\v9.0 \ bin répertoire et il fonctionne très bien.
vous pouvez utiliser l'interface graphique du dossier et charger le .dll dans le répertoire. Alors vous n'avez pas besoin de définir le chemin chaque fois que vous utilisez Tensorflow.
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 CUDA_path est "D:/CUDA/v8.0/bin", et je ne peux pas trouver mon CUDA_path ici. Vous trouverez votre fichier manquant ici(comme "cublas64_80.dll", " cudnn64_5.dll", etc.) . La prémisse est que vous aviez fini votre installation CUDA.
si vous ne trouvez pas votre CUDA_path dans la variable D'environnement, vous pouvez ajouter votre cuda_path manuellement: (L'ordre du code suivant est très important. ajouter le CUDA_path avant d'importer TensorFlow.)
import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;"
import tensorflow as tf
ou vous pouvez ajouter votre CUDA_path CMD temporairement:
set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py
Il fonctionne sur mon ordinateur portable(Windows10, Python3.6, Tensorflow-gpu==1.5). Je pense que ces deux façons sont des solutions simples.
Il m'a fallu beaucoup de Dan Bricklin.
J'ai finalement réussi à prendre les mêmes stpès, mais dans l'ordre.
a enlevé le tensorflow précédent de mon environnement conda.
Installé CUDA v9.1 pour Windows 8 (Installation standard avec la version par défaut de VisualStudio) et ajouté "C:\Program fichiers\NVIDIA GPU Computing Toolkit\CUDA\v9.1" pour le chemin.
Téléchargé et extrait cudnn-9.1-windows-7-x64, l'a déplacé dans " Program files" et de l'ajouter au path "C:\Program Files\cuda\bin".
- Installé tensorflow avec pip, dans mon conda environnement "pip install --ignore-installé, la mise à niveau tensorflow".