Je viens d'installer la dernière version de Tensorflow via pip install tensorflow
et chaque fois que je lance un programme, je reçois le message du journal:
W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Impossible de charger la bibliothèque dynamique 'cudart64_101.dll'; dlerror: cudart64_101.dll introuvable
Est-ce mauvais? Comment corriger l'erreur?
13 Réponses :
Avec la nouvelle version de Tensorflow 2.1 , le package tensorflow
pip par défaut contient à la fois les versions CPU et GPU de TF. Dans les versions précédentes de TF, ne pas trouver les bibliothèques CUDA émettrait une erreur et lèverait une exception, alors que maintenant la bibliothèque recherche dynamiquement la version CUDA correcte et, si elle ne la trouve pas, émet l'avertissement (Le W au début est pour les avertissements, les erreurs ont un E (ou F pour les erreurs fatales) et retombent en mode CPU uniquement. En fait, cela est également écrit dans le journal sous forme de message d'information juste après l'avertissement (notez que si vous avez un niveau de journal minimum que la valeur par défaut, vous pourriez ne pas voir les messages d'information). Le journal complet est (c'est moi qui souligne):
2020-01-20 12: 27: 44.554767: W tensorflow / stream_executor / platform / default / dso_loader.cc: 55] Impossible de charger la bibliothèque dynamique «cudart64_101.dll»; dlerror: cudart64_101.dll introuvable
2020-01-20 12: 27: 44.554964: I tensorflow / stream_executor / cuda / cudart_stub.cc: 29] Ignorez ci-dessus cudart dlerror si vous n'avez pas de GPU configuré sur votre machine.
Si vous n'avez pas de GPU compatible CUDA sur votre machine, ou si vous ne vous souciez pas de ne pas avoir d'accélération GPU, ne vous inquiétez pas. Si, en revanche, vous avez installé tensorflow et que vous vouliez une accélération GPU, vérifiez votre installation CUDA (TF 2.1 nécessite CUDA 10.1 , pas 10.2 ou 10.0).
Si vous voulez simplement vous débarrasser de l'avertissement, vous pouvez adapter le niveau de journalisation de TF pour supprimer les avertissements, mais cela pourrait être excessif, car cela réduira tous les avertissements.
Votre configuration CUDA est cassée, assurez-vous que la bonne version est installée.
Merci. Mais j'ajoute un autre point: si vous avez installé python à partir du Microsoft Store , vous pouvez toujours voir ce problème, même si vous avez effectué les étapes requises! Voir ma réponse ici .
Pour installer les prérequis pour la prise en charge du GPU dans TensorFlow 2.1:
pip install tensorflow
.Merci. Mais j'ajoute un autre point: si vous avez installé python à partir du Microsoft Store , vous pouvez toujours voir ce problème, même si vous avez effectué les étapes requises! Voir ma réponse ici .
6. Redémarrez votre IDE après avoir modifié la variable PATH.
J'ai résolu cela d'une autre manière. Tout d'abord, j'ai installé la boîte à outils cuda 10.1 à partir de ce lien
Où j'ai sélectionné le type d'installation (exe (local)) et installé 10.1 en mode personnalisé signifie (sans intégration de Visual Studio, NVIDIA PhysX car auparavant j'ai installé CUDA 10.2, les dépendances requises étaient installées automatiquement)
Après l'installation, à partir du chemin suivant (C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin), dans mon cas, j'ai copié le fichier 'cudart64_101.dll' et collé dans (C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.2 \ bin).
Ensuite, l'importation de Tensorflow a fonctionné sans problème.
NB Désolé pour le mauvais anglais
J'ai eu le même problème lors de l'utilisation de Conda env. La solution était la même: copié les DLL mentionnées dans l'avertissement de "... \ Anaconda \ Envs \ <myEnv> \ Library \ bin" vers le "... \ Anaconda3 \ Library \ bin" Les DLL requises doivent être dans un chemin que os connaît.
Juste une note: l'ajout du dossier C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
à PATH
aurait également fonctionné (et est la méthode recommandée, pour éviter de gâcher les installations CUDA)
Cette solution a fonctionné pour moi:
J'ai préinstallé l'environnement avec anaconda (voici le code)
2020-02-23 13:31:44.910213: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found 2020-02-23 13:31:44.925815: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll 2020-02-23 13:31:44.941384: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll 2020-02-23 13:31:44.947427: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll 2020-02-23 13:31:44.965893: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll 2020-02-23 13:31:44.982990: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll 2020-02-23 13:31:44.990036: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found
mais après j'avais encore ces avertissements
conda create -n YOURENVNAME python=3.6 // 3.6> incompatible with keras conda activate YOURENVNAME conda install tensorflow-gpu conda install -c anaconda keras conda install -c anaconda scikit-learn conda install matplotlib
Comment j'ai résolu le premier avertissement: je viens de télécharger un fichier zip contenant tous les fichiers cudnn (dll, etc.) ici: https://developer.nvidia.com/cudnn
Comment j'ai résolu le deuxième avertissement: j'ai regardé le dernier fichier manquant (cudart64_101.dll) dans mon env virtuel créé par conda et je l'ai juste copié / collé dans le même dossier lib que pour le .dll cudnn
un moyen plus simple serait de créer un lien appelé cudart64_101.dll pour pointer vers cudart64_102.dll. ce n'est pas très orthodoxe mais comme tensorflow recherche des symboles exportés cudart64_101.dll et que les gens de nvidia ne sont pas des amateurs, ils ne supprimeraient probablement pas les symboles de 101 à 102. cela fonctionne, basé sur cette hypothèse (le kilométrage peut varier)
C'est une idée terrible, les versions mineures de CUDA (ie, 10.1, 10.2, etc.) ne sont pas compatibles les unes avec les autres. Lier à 10.2 "comme si" c'était 10.1 provoquera des plantages aléatoires (cela suppose que la DLL se charge du tout). En outre, cela implique que vous avez installé cuda 10.2 sur votre machine, ce qui n'est pas nécessaire pour une installation uniquement avec le processeur.
bien sûr, ce n'est pas nécessaire uniquement pour le processeur. dans la mesure où 10.2 étant complètement différent de 10.1 et des plantages aléatoires, je vous recommande de vous renseigner sur la liaison dynamique et les symboles exportés
la dll se charge et fonctionne très bien (pour votre information)
mais les utilisateurs finaux doivent installer les bibliothèques dynamiques prescrites, surtout s'ils ne sont pas sûrs de ce qu'il s'agit
"bien sûr, ce n'est pas nécessaire pour le CPU uniquement": relisez le titre de la question.
Tensorflow 2.1 fonctionne avec Cuda 10.1.
Si vous voulez un hack rapide:
cudart64_101.dll
partir d' ici . Extrayez le fichier zip et copiez le fichier cudart64_101.dll
dans votre répertoire bin
CUDAAutre:
Où se trouve le répertoire bin
cuda?
Recommander aux gens d'installer un exécutable à partir d'une source non officielle n'est pas une bonne solution.
Dans un environnement conda
, c'est ce qui a résolu mon problème (il me manquait cudart64-100.dll
:
Je l'ai téléchargé depuis dll-files.com/CUDART64_100.DLL
Mettez-le dans mon environnement conda à C:\Users\<user>\Anaconda3\envs\<env name>\Library\bin
C'est tout ce qu'il a fallu! Vous pouvez vérifier si cela fonctionne:
import tensorflow as tf tf.config.experimental.list_physical_devices('GPU')
Si vous avez installé CUDA 10.1 par exemple, vous avez probablement déjà la DLL dans "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin \ cudart64_101.dll". Je suis personnellement opposé au téléchargement de DLL à partir de sources secondaires.
(avec CUDA Toolkit 11.0 RC)
Pour résoudre le même problème que OP, je devais juste trouver cudart64_101.dll sur mon disque (dans mon cas C: \ Program Files \ NVIDIA Corporation \ NvStreamSrv ) et l'ajouter comme environnement variable (c'est-à-dire ajouter de la valeur C: \ Program Files \ NVIDIA \ Corporation \ NvStreamSrv) cudart64_101.dll à la variable d'environnement de l'utilisateur Path ).
TensorFlow 2.3.0 fonctionne correctement avec CUDA 11. Mais vous devez installer tf-nightly-gpu (après avoir installé tensorflow et CUDA 11): https://pypi.org/project/tf-nightly-gpu/
Essayer:
I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_110.dll
Ensuite, vous recevrez le message dans votre console:
pip install tf-nightly-gpu
Merci! Je pensais que j'allais devoir revenir à 10.1.
Cette réponse peut être utile si vous voyez l'erreur ci-dessus mais que CUDA 10 est en fait installé:
I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
production:
pip install tensorflow-gpu==2.0.0
qui était la solution pour moi.
Si vous utilisez Windows:
une. DLL manquantes téléchargées sur https://www.dll-files.com/
b. Copier coller dans C: \ Windows \ System32
Le code choisira les fichiers de c: \ windows \ system32 qui restent toujours dans le chemin.
Veuillez ne pas faire ça. Premièrement, cela ne fonctionnera pas (cette DLL repose sur de nombreux autres fichiers DLL qui doivent également être installés correctement). Deuxièmement, vous devez toujours obtenir des fichiers - des fichiers exécutables en particulier - de sources réputées, et non de sites Web communautaires. Vous invitez des personnes à télécharger potentiellement des logiciels malveillants et à les exécuter. Il suffit de télécharger Cuda de Nvidia et de suivre leur processus de configuration, qui est à la fois beaucoup plus simple et sûr.
Cela a très bien fonctionné pour moi.
Dans mon cas, l'installation de tensorflow recherchait cudart64_101.dll
La partie 101 de cudart64_101 est la version Cuda - ici 101 = 10.1
J'avais téléchargé 11.x, donc la version de cudart64 sur mon système était cudart64_110.dll
Ce n'est pas le bon fichier !! cudart64_101.dll ≠ cudart64_110.dll
Téléchargez Cuda 10.1 depuis https://developer.nvidia.com/
Installer (le mien plante avec l'intégration de NSight Visual Studio, je l'ai donc désactivé)
Lorsque l'installation est terminée, vous devriez avoir un dossier Cuda 10.1, et dans la corbeille la dll le système se plaignait d'être manquant
Vérifiez que le chemin d'accès au dossier bin 10.1 est enregistré en tant que variable d'environnement système, il sera donc vérifié lors du chargement de la bibliothèque
Vous devrez peut-être redémarrer si le chemin n'est pas immédiatement détecté par le système