Quelles combinaisons de versions TensorFlow et CUDA sont compatibles?


146

J'ai remarqué que certaines versions plus récentes de TensorFlow sont incompatibles avec les anciennes versions de CUDA et cuDNN. Existe-t-il un aperçu des versions compatibles ou même une liste des combinaisons officiellement testées? Je ne le trouve pas dans la documentation TensorFlow.


1
Toutes les exigences sont données avec les instructions d'installation , section intitulée « Configuration requise de NVIDIA pour exécuter TensorFlow avec le support GPU ».
P-Gn

10
La question portait sur la compatibilité et les combinaisons (officiellement) testées qui, à mon avis, ne sont pas fournies dans les instructions d'installation. De plus, je ne trouve pas la section à laquelle vous faites référence. Ces observations me permettent de penser globalement que les informations demandées sont difficiles à trouver et justifient donc de fournir un accès facile au lien affiché dans la réponse.
Fábio

Vous constaterez que les versions CUDA et cuDNN sur la page que vous mentionnez correspondent à l'une des instructions d'installation.
P-Gn

Pour trouver les instructions d'installation, allez sur la page que j'ai liée ci-dessus puis suivez le lien pour votre système d'exploitation.
P-Gn

1
Oh, je vois ce que vous voulez dire - essayer de voir quelle version de tensorflow correspond à une combinaison CUDA / cuDNN particulière. Vous pouvez parcourir les notes de publication de TF, mais le tableau auquel vous créez un lien est en effet un bon résumé.
P-Gn

Réponses:


213

Généralement:

Vérifiez la version CUDA:

cat /usr/local/cuda/version.txt

et version cuDNN:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

et installez une combinaison comme indiqué ci-dessous dans les images ou ici .

Les images suivantes et le lien fournissent un aperçu des combinaisons officiellement prises en charge / testées de CUDA et TensorFlow sous Linux, macOS et Windows:

Configurations mineures:

Étant donné que les spécifications ci-dessous peuvent dans certains cas être trop larges, voici une configuration spécifique qui fonctionne:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

Le cudnn correspondant peut être téléchargé ici .

(chiffres mis à jour le 20 mai 2020)

GPU Linux

entrez la description de l'image ici

Linux

entrez la description de l'image ici

GPU macOS

entrez la description de l'image ici

macOS

entrez la description de l'image ici

(chiffre mis à jour le 31 mai 2018)

les fenêtres

entrez la description de l'image ici

Mise à jour le 14 janvier 2020: pour les informations mises à jour, veuillez consulter Lien pour Linux et Link pour Windows .


1
J'ai cependant remarqué que les versions de TensorFlow <1.0 ont été exclues de la vue d'ensemble. Quelqu'un a-t-il une idée où trouver la même liste pour les anciennes versions?
Fábio

2
On dirait qu'ils ne spécifient pas de versions mineures pour cuda et cudnn,
mrgloom

1
MISE À JOUR: testé TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec

1
Ne mettez pas à jour les chiffres, lien vers la documentation. Le lien change moins souvent que les tables
Trylks

1
@ Fábio: Mise à jour de votre réponse avec les derniers liens selon votre demande.
Support Tensorflow le

23

Le tableau de compatibilité donné dans le site tensorflow ne contient pas de versions mineures spécifiques pour cuda et cuDNN. Cependant, si les versions spécifiques ne sont pas respectées, une erreur se produira lorsque vous essayez d'utiliser tensorflow.

Pour tensorflow-gpu==1.12.0et cuda==9.0, la cuDNNversion compatible est 7.1.4, qui peut être téléchargée à partir d' ici après l'enregistrement.

Vous pouvez vérifier votre version de cuda en utilisant
nvcc --version

version cuDNN utilisant
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

version tensorflow-gpu utilisation
pip freeze | grep tensorflow-gpu

MISE À JOUR: Depuis la sortie de tensorflow 2.0, je partagerai également les versions compatibles cuda et cuDNN (pour Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7,6,0

1
Votre réponse a été très utile. Comme vous l'avez dit, la documentation n'était pas très claire pour appeler les versions mineures. J'ai suivi votre configuration et cela a fonctionné!
Vikrame

2

si vous codez dans jupyter notebook et que vous souhaitez vérifier quelle version de cuda tf utilise, exécutez la commande suivante directement dans la cellule jupyter:

!conda list cudatoolkit

!conda list cudnn

et pour vérifier si le gpu est visible par tf:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)

1

Vous pouvez utiliser cette configuration pour cuda 10.0 (10.1 ne fonctionne pas à partir du 3/18), cela fonctionne pour moi:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1,4

Installez la version tensorflow gpu:

pip install tensorflow-gpu==1.4.0

1

J'avais installé CUDA 10.1 et CUDNN 7.6 par erreur. Vous pouvez utiliser les configurations suivantes (cela a fonctionné pour moi - à partir du 9/10). :

  • Tensorflow-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

Mais j'ai dû créer des liens symboliques pour que cela fonctionne car tensorflow fonctionne à l'origine avec CUDA 10.

sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0

Et ajoutez ce qui suit à mon ~ / .bashrc -

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/

0

J'ai eu un problème similaire après la mise à niveau vers TF 2.0. La version CUDA que TF rapportait ne correspondait pas à ce que Ubuntu 18.04 pensait avoir installé. Il a dit que j'utilisais CUDA 7.5.0, mais apt pensait que j'avais la bonne version installée.

Ce que j'ai finalement dû faire, c'était grep récursivement dans /usr/localfor CUDNN_MAJOR, et j'ai trouvé que /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hcela spécifiait effectivement la version comme 7.5.0.
/usr/local/cuda-10.1je l'ai bien compris et /usr/local/cudaindiqué /usr/local/cuda-10.1, donc c'était (et reste) un mystère pour moi pourquoi TF regardait /usr/local/cuda-10.0.

Quoi qu'il en soit, je viens de déménager /usr/local/cuda-10.0pour /usr/local/old-cuda-10.0que TF ne puisse plus le trouver et tout a ensuite fonctionné comme un charme.

Tout cela était très frustrant et j'ai toujours l'impression que je viens de faire un hack aléatoire. Mais cela a fonctionné :) et cela aidera peut-être quelqu'un avec un problème similaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.