68
votes

Impossible de charger la bibliothèque dynamique «cudart64_101.dll» sur l'installation de tensorflow CPU uniquement

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?


0 commentaires

13 Réponses :


76
votes

Tensorflow 2.1+

Que se passe-t-il?

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.

Dois-je m'inquiéter? Comment je le répare?

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.


Tensorflow 1.X ou 2.0:

Votre configuration CUDA est cassée, assurez-vous que la bonne version est installée.


1 commentaires

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 .



37
votes

Pour installer les prérequis pour la prise en charge du GPU dans TensorFlow 2.1:

  1. Installez vos derniers pilotes GPU.
  2. Installez CUDA 10.1 .
    • Si le programme d'installation de CUDA signale "vous installez une ancienne version du pilote", vous souhaiterez peut-être choisir une installation personnalisée et désélectionner certains composants. En effet, notez que les logiciels fournis avec CUDA, y compris GeForce Experience, PhysX, un pilote d'affichage et l'intégration de Visual Studio ne sont pas requis par TensorFlow.
    • Notez également que TensorFlow nécessite une version spécifique de CUDA Toolkit sauf si vous construisez à partir des sources; pour TensorFlow 2.1 et 2.2, il s'agit actuellement de la version 10.1.
  3. Installez cuDNN.
    1. Téléchargez cuDNN v7.6.4 pour CUDA 10.1. Cela vous obligera à vous inscrire au programme pour développeurs NVIDIA.
    2. Décompressez dans un emplacement approprié et ajoutez le répertoire bin à votre PATH.
  4. Installez tensorflow par pip install tensorflow .
  5. Vous devrez peut-être redémarrer votre PC .

2 commentaires

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.



11
votes

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


2 commentaires

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)



2
votes

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


0 commentaires

-2
votes

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)


5 commentaires

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.



5
votes

Tensorflow 2.1 fonctionne avec Cuda 10.1.

Si vous voulez un hack rapide:

  • Téléchargez simplement cudart64_101.dll partir d' ici . Extrayez le fichier zip et copiez le fichier cudart64_101.dll dans votre répertoire bin CUDA

Autre:

  • Installez Cuda 10.1

2 commentaires

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.



8
votes

Dans un environnement conda , c'est ce qui a résolu mon problème (il me manquait cudart64-100.dll :

  1. Je l'ai téléchargé depuis dll-files.com/CUDART64_100.DLL

  2. 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')


1 commentaires

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.



0
votes

Tensorflow GPU 2.2 et 2.3 tous les soirs

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


0 commentaires

0
votes

A pu résoudre le problème en mettant à jour les pilotes de périphériques NVIDIA vers la dernière version (v446.14). Lien de téléchargement des pilotes NVIDIA ici .


0 commentaires

8
votes

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


1 commentaires

Merci! Je pensais que j'allais devoir revenir à 10.1.



1
votes

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.


0 commentaires

-4
votes

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.


2 commentaires

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.



0
votes

Dans mon cas, l'installation de tensorflow recherchait cudart64_101.dll

entrez la description de l'image ici

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

entrez la description de l'image ici

Ce n'est pas le bon fichier !! cudart64_101.dll ≠ cudart64_110.dll

Solution

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

entrez la description de l'image ici

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

entrez la description de l'image ici

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

entrez la description de l'image ici

Vous devrez peut-être redémarrer si le chemin n'est pas immédiatement détecté par le système

entrez la description de l'image ici


0 commentaires