Quali combinazioni di versioni TensorFlow e CUDA sono compatibili?


146

Ho notato che alcune nuove versioni di TensorFlow sono incompatibili con le versioni precedenti di CUDA e cuDNN. Esiste una panoramica delle versioni compatibili o addirittura un elenco di combinazioni ufficialmente testate? Non riesco a trovarlo nella documentazione di TensorFlow.


1
Tutti i requisiti sono forniti con le istruzioni per l'installazione , sezione chiamata " Requisiti NVIDIA per eseguire TensorFlow con supporto GPU ".
P-Gn,

10
La domanda riguardava la compatibilità e le combinazioni (ufficialmente) testate che, a mio avviso, non sono fornite nelle istruzioni per l'installazione. Inoltre, non riesco a trovare la sezione a cui ti riferisci. Queste osservazioni danno come risultato il mio punto di vista generale sul fatto che le informazioni richieste sono difficili da trovare e giustificano pertanto un facile accesso al link pubblicato nella risposta.
Fábio,

Scoprirai che le versioni CUDA e cuDNN nella pagina menzionata corrispondono a quelle delle istruzioni di installazione.
P-Gn,

Per trovare le istruzioni di installazione, vai alla pagina che ho collegato sopra, quindi segui il link per il tuo sistema operativo.
P-Gn,

1
Oh, capisco cosa intendi: provare a vedere quale versione di Tensorflow si adatta a una particolare combinazione CUDA / cuDNN. Puoi consultare le note di rilascio di TF ma la tabella a cui ti colleghi è davvero un buon riassunto.
P-Gn,

Risposte:


213

Generalmente:

Controlla la versione CUDA:

cat /usr/local/cuda/version.txt

e versione cuDNN:

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

e installa una combinazione come indicato di seguito nelle immagini o qui .

Le seguenti immagini e il link forniscono una panoramica delle combinazioni ufficialmente supportate / testate di CUDA e TensorFlow su Linux, macOS e Windows:

Configurazioni minori:

Poiché le specifiche fornite di seguito in alcuni casi potrebbero essere troppo ampie, ecco una configurazione specifica che funziona:

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

Il cudnn corrispondente può essere scaricato qui .

(cifre aggiornate al 20 maggio 2020)

GPU Linux

inserisci qui la descrizione dell'immagine

Linux

inserisci qui la descrizione dell'immagine

GPU macOS

inserisci qui la descrizione dell'immagine

Mac OS

inserisci qui la descrizione dell'immagine

(cifra aggiornata il 31 maggio 2018)

finestre

inserisci qui la descrizione dell'immagine

Aggiornato al 14 gennaio 2020: per le informazioni aggiornate fare riferimento a Link per Linux e Link per Windows .


1
Ho notato però che le versioni TensorFlow <1.0 sono state escluse dalla panoramica. Qualcuno ha idea di dove trovare lo stesso elenco per le versioni precedenti?
Fábio,

2
Sembra che non specifichino versioni secondarie per cuda e cudnn,
mrgloom

1
AGGIORNAMENTO: testato TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec

1
Non aggiornare le figure, link alla documentazione. Il collegamento cambia meno spesso delle tabelle
Trylks,

1
@ Fábio: aggiornata la tua risposta con gli ultimi collegamenti secondo la tua richiesta.
Supporto Tensorflow

23

La tabella di compatibilità fornita nel sito tensorflow non contiene versioni secondarie specifiche per cuda e cuDNN. Tuttavia, se le versioni specifiche non vengono soddisfatte, si verificherà un errore quando si tenta di utilizzare tensorflow.

Per tensorflow-gpu==1.12.0e cuda==9.0, la cuDNNversione compatibile è 7.1.4, che può essere scaricata da qui dopo la registrazione.

Puoi controllare la tua versione di cuda usando
nvcc --version

versione cuDNN utilizzando
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

versione di tensorflow-gpu usando
pip freeze | grep tensorflow-gpu

AGGIORNAMENTO: Da quando è stato rilasciato tensorflow 2.0, condividerò anche le versioni compatibili di cuda e cuDNN (per Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7.6.0

1
La tua risposta è stata molto utile Come hai detto, la documentazione non era molto chiara per richiamare le versioni minori. Ho seguito la tua configurazione e ha funzionato!
Vikrame,

2

se stai codificando nel notebook jupyter e vuoi verificare quale versione di cuda tf sta usando, esegui il comando seguente direttamente nella cella jupyter:

!conda list cudatoolkit

!conda list cudnn

e per verificare se la gpu è visibile a tf:

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

1

Puoi usare questa configurazione per cuda 10.0 (10.1 non funziona dal 3/18), questo funziona per me:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Installa versione tensorflow gpu:

pip install tensorflow-gpu==1.4.0

1

Avevo installato CUDA 10.1 e CUDNN 7.6 per errore. Puoi usare le seguenti configurazioni (ha funzionato per me - a partire dal 9/10). :

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

Ma ho dovuto creare collegamenti simbolici perché funzionasse, poiché originariamente tensorflow funziona con 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

E aggiungi quanto segue al mio ~ / .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

Ho avuto un problema simile dopo l'aggiornamento a TF 2.0. La versione CUDA segnalata da TF non corrispondeva a ciò che Ubuntu 18.04 pensava avessi installato. Diceva che stavo usando CUDA 7.5.0, ma apt pensava che avessi installato la versione giusta.

Quello che alla fine ho dovuto fare è stato grep ricorsivo in /usr/localper CUDNN_MAJOR, e ho scoperto che /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hha effettivamente specificare la versione come 7.5.0.
/usr/local/cuda-10.1ho capito bene e mi ha /usr/local/cudaindicato /usr/local/cuda-10.1, quindi era (e rimane) un mistero per me il motivo per cui TF stava guardando /usr/local/cuda-10.0.

Ad ogni modo, mi sono appena trasferito /usr/local/cuda-10.0in /usr/local/old-cuda-10.0modo che TF non riuscisse più a trovarlo e tutto poi ha funzionato come un fascino.

È stato tutto molto frustrante e mi sento ancora come se avessi appena fatto un hack casuale. Ma ha funzionato :) e forse questo aiuterà qualcuno con un problema simile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.