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!

17
demandé sur talonmies 2016-12-07 03:16:30

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
24
répondu mrry 2017-04-04 04:55:36

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é.

1
répondu Andrey Kurapov 2017-04-05 23:19:15

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.

1
répondu Dan Bricklin 2017-08-09 03:20:17

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

Mon CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

0
répondu Dev Ross 2017-03-04 12:52:50
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
0
répondu TOBlender 2017-05-24 21:41:13

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.

0
répondu michaelosthege 2017-06-02 08:34:13

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!

0
répondu 2017-11-29 06:32:03

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.

0
répondu Raghav Manikandan 2017-12-05 17:57:03

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. :)

0
répondu wiwengweng 2018-01-15 03:37:33

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.

0
répondu Lucid Rage 2018-02-13 15:55:07

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.

0
répondu 1943 Yonv 2018-07-10 02:10:59

Il m'a fallu beaucoup de Dan Bricklin.

J'ai finalement réussi à prendre les mêmes stpès, mais dans l'ordre.

  1. a enlevé le tensorflow 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 fichiers\NVIDIA GPU Computing Toolkit\CUDA\v9.1" pour le chemin.

  3. 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".

  4. Installé tensorflow avec pip, dans mon conda environnement "pip install --ignore-installé, la mise à niveau tensorflow".
0
répondu UrielUVD 2018-07-10 03:22:45