web-dev-qa-db-fra.com

Prise en charge de Nvidia CUDA Toolkit 9.2

Quel est le raisonnement selon lequel Tensorflow-gpu est lié à une version spécifique de la boîte à outils CUDA de Nvidia? La version actuelle semble rechercher spécifiquement la version 9.0 et ne fonctionnera pas avec une version supérieure. Par exemple, j'ai installé le dernier Toolkit 9.2 et l'ajouté à path, mais Tensorflow-gpu ne fonctionnera pas avec ce dernier et se plaint de rechercher 9.0.

Je peux voir que les mises à jour de version majeure ne sont pas prises en charge, mais une version mineure?

6
cjibo

C'est une bonne question. Selon le site Web de NVidia ,

Le pilote CUDA est compatible avec les versions antérieures, ce qui signifie que les applications compilées avec une version particulière de CUDA continueront à fonctionner avec les versions de pilote ultérieures.

Donc techniquement, cela ne devrait pas poser de problème de supporter les itérations ultérieures d’un pilote CUDA. Et, dans la pratique, vous trouverez sur le net [1] , [2] des binaires prédéfinis non officiels fonctionnant avec les versions ultérieures de CUDA et de CuDNN. Encore plus facile à installer, le paquet tensorflow-gpu installé à partir de conda est actuellement fourni avec CUDA 9.2.

Lorsque demandé sur le sujet, un dev a répondu ,

La réponse à cette question est la suivante: les problèmes de pilotes dans ceux requis par la 9.1, peu de nouvelles fonctionnalités dont nous avons besoin dans cuda 9.1, et quelques autres problèmes mineurs. 

La raison semble donc assez vague - cela pourrait vouloir dire que CUDA 9.1 (et 9.2) nécessite un pilote de carte graphique un peu trop récent pour être vraiment pratique, mais c'est une supposition incompréhensible.

Si NVidia a raison en ce qui concerne la compatibilité binaire, vous pouvez essayer de renommer ou de lier votre bibliothèque CUDA 9.2 en tant que bibliothèque CUDA 9.0 et cela devrait fonctionner. Mais j’économiserais tout mon travail avant d’essayer cela ... et le fait que les gens vont jusqu’à recompiler tensorflow pour prendre en charge les versions ultérieures de CUDA est peut-être une indication de la façon dont cela pourrait se terminer.

4
P-Gn

Lorsque vous téléchargez TF, vous téléchargez un fichier binaire pré-construit . Dans le processus de construction, TF est lié de manière irréversible à une version spécifique de Cuda, vous ne pouvez donc pas l'utiliser avec des versions différentes de cuda. 

Si vous souhaitez utiliser la nouvelle version (ou parfois la version la plus ancienne) de cuda, vous devez installer TF à partir du code source ( consultez la section suivante ) Si vous ne voulez vraiment pas vous construire vous-même, cochez dans ces dépôts, il y en a d'autres qui publient des binaires TF spécifiques, quelques exemples:

Pour votre commodité, j’ajoute ici les versions CUDA + cuDNN requises pour chaque version prédéfinie de Tensorflow:

(J'écris ici à propos des versions de TF avec lesquelles j'ai travaillé, peut-être que les anciennes versions de TF utilisent également les anciennes versions de CUDA)

  • avant TF v1.5 cuda 8.0 et cuDNN 6
  • à partir de: 1.5 - Les binaires pré-construits sont maintenant construits avec CUDA 9 et CUDNN 7.
3
Kings85

Le problème ne concerne pas les pilotes NVIDIA, mais Tensorflow lui-même. J'ai passé une heure à essayer de le faire fonctionner et je me suis finalement rendu compte que si vous téléchargez le binaire préconstruit à partir de googleapi.com, il vous faut hard coded pour charger libcudart.so.9.0! Si vous avez à la fois cuda 9.0 et 9.2 installé, tensorflow fonctionnera (mais il charge en fait les bibliothèques dynamiques à partir de la version 9.0). (BTW, j'ai installé TF en utilisant anaconda.)

Une approche plus propre consiste à créer un TF à partir de la source. Ce n'est pas trop compliqué.

1
theCat