¿Qué combinaciones de versiones de TensorFlow y CUDA son compatibles?

146

He notado que algunas versiones más nuevas de TensorFlow son incompatibles con versiones anteriores de CUDA y cuDNN. ¿Existe una descripción general de las versiones compatibles o incluso una lista de combinaciones probadas oficialmente? No puedo encontrarlo en la documentación de TensorFlow.

Fábio
fuente
1
Todos los requisitos se dan con las instrucciones para la instalación , sección llamada " Requisitos de NVIDIA para ejecutar TensorFlow con soporte de GPU ".
P-Gn
10
La pregunta era abordar la compatibilidad y (oficialmente) combinaciones probadas que, en mi opinión, no se proporcionan en las instrucciones de instalación. Además, no puedo encontrar la sección a la que te refieres. Estas observaciones dan como resultado mi opinión general de que la información solicitada es difícil de encontrar y, por lo tanto, justifica proporcionar un fácil acceso al enlace publicado en la respuesta.
Fábio
Encontrará que las versiones CUDA y cuDNN en la página que menciona coinciden con las instrucciones de instalación.
P-Gn
Para encontrar las instrucciones de instalación, vaya a la página que he vinculado anteriormente y luego siga el enlace para su sistema operativo.
P-Gn
1
Ah, entiendo lo que quieres decir, tratando de ver qué versión de tensorflow se adapta a una combinación particular de CUDA / cuDNN. Puede examinar las notas de la versión de TF, pero la tabla a la que enlaza es realmente un buen resumen.
P-Gn

Respuestas:

213

Generalmente:

Verifique la versión de CUDA:

cat /usr/local/cuda/version.txt

y versión cuDNN:

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

e instale una combinación como se muestra a continuación en las imágenes o aquí .

Las siguientes imágenes y el enlace proporcionan una descripción general de las combinaciones oficialmente compatibles / probadas de CUDA y TensorFlow en Linux, macOS y Windows:

Configuraciones menores:

Dado que las especificaciones dadas a continuación en algunos casos pueden ser demasiado amplias, aquí hay una configuración específica que funciona:

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

El cudnn correspondiente se puede descargar aquí .

(cifras actualizadas el 20 de mayo de 2020)

GPU Linux

ingrese la descripción de la imagen aquí

Linux

ingrese la descripción de la imagen aquí

GPU macOS

ingrese la descripción de la imagen aquí

Mac OS

ingrese la descripción de la imagen aquí

(cifra actualizada el 31 de mayo de 2018)

Ventanas

ingrese la descripción de la imagen aquí

Actualizado a partir del 14 de enero de 2020: para obtener información actualizada, consulte Enlace para Linux y Enlace para Windows .

Fábio
fuente
1
Sin embargo, noté que las versiones TensorFlow <1.0 se han excluido de la descripción general. ¿Alguien tiene una idea de dónde encontrar la misma lista para versiones anteriores?
Fábio
2
Parece que no especifican versiones menores para cuda y cudnn,
mrgloom
1
ACTUALIZACIÓN: probado TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec
1
No actualice las cifras, enlace a la documentación. El enlace cambia con menos frecuencia que las tablas
Trylks el
1
@ Fábio: Actualizó su respuesta con los últimos enlaces según su solicitud.
Tensorflow Support
23

La tabla de compatibilidad dada en el sitio de tensorflow no contiene versiones menores específicas para cuda y cuDNN. Sin embargo, si no se cumplen las versiones específicas, habrá un error cuando intente utilizar tensorflow.

Para tensorflow-gpu==1.12.0y cuda==9.0, la cuDNNversión compatible es 7.1.4, que se puede descargar desde aquí después del registro.

Puede verificar su versión de cuda usando
nvcc --version

versión cuDNN usando
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

versión tensorflow-gpu usando
pip freeze | grep tensorflow-gpu

ACTUALIZACIÓN: desde que se lanzó tensorflow 2.0, compartiré también las versiones compatibles de cuda y cuDNN (para Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10.0
  • cuDNN = 7.6.0
Atul Balaji
fuente
1
Tu respuesta fue muy útil. Como dijiste, la documentación no era muy clara para mencionar las versiones menores. Seguí tu configuración y funcionó!
Vikrame
2

si está codificando en jupyter notebook y desea verificar qué versión de cuda tf está utilizando, ejecute el siguiente comando directamente en la celda de jupyter:

!conda list cudatoolkit

!conda list cudnn

y para verificar si el gpu es visible para tf:

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

Puede usar esta configuración para cuda 10.0 (10.1 no funciona a partir del 3/18), esto se ejecuta para mí:

  • Tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Instale la versión tensorflow gpu:

pip install tensorflow-gpu==1.4.0
ED-DOUGHMI younes
fuente
1

Instalé CUDA 10.1 y CUDNN 7.6 por error. Puede usar las siguientes configuraciones (esto funcionó para mí, a partir del 9/10). :

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

Pero tuve que crear enlaces simbólicos para que funcione como tensorflow originalmente funciona 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

Y agregue lo siguiente a mi ~ / .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/
yatish hr
fuente
0

Tuve un problema similar después de actualizar a TF 2.0. La versión de CUDA que informaba TF no coincidía con lo que Ubuntu 18.04 pensaba que había instalado. Decía que estaba usando CUDA 7.5.0, pero pensé que tenía la versión correcta instalada.

Lo que finalmente tenía que hacer era grep de forma recursiva en /usr/localpara CUDNN_MAJOR, y encontró que /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h, efectivamente, como especifica la versión 7.5.0.
/usr/local/cuda-10.1Lo entendí bien, y lo /usr/local/cudaseñalé /usr/local/cuda-10.1, por lo que fue (y sigue siendo) un misterio para mí por qué TF estaba mirando /usr/local/cuda-10.0.

De todos modos, simplemente me mudé /usr/local/cuda-10.0para /usr/local/old-cuda-10.0que TF no pudiera encontrarlo más y todo funcionó a las mil maravillas.

Todo fue muy frustrante, y todavía siento que acabo de hacer un hack aleatorio. Pero funcionó :) y quizás esto ayude a alguien con un problema similar.

Matt Ginsberg
fuente