it-swarm-es.tech

Soporte para Nvidia CUDA Toolkit 9.2

¿Cuál es el razonamiento de que Tensorflow-gpu está vinculado a una versión específica del kit de herramientas CUDA de Nvidia? La versión actual parece buscar 9.0 específicamente y no funcionará con nada mayor. Por ejemplo, instalé el último Toolkit 9.2 y lo agregué a la ruta, pero Tensorflow-gpu no funcionará con él y se queja de que está buscando 9.0.

¿Puedo ver que las actualizaciones de la versión principal no son compatibles, pero hay una versión secundaria?

6
cjibo

Buena pregunta. Según el sitio web de NVidia ,

El controlador CUDA es compatible con versiones anteriores, lo que significa que las aplicaciones compiladas contra una versión particular de CUDA continuarán trabajando en versiones posteriores (posteriores) de controladores.

Por lo tanto, técnicamente, no debería ser un problema admitir versiones posteriores de un controlador CUDA. Y en la práctica, encontrará binarios precompilados no oficiales en funcionamiento con versiones posteriores de CUDA y CuDNN en la red [1] , [2] . Aún más fácil de instalar, el paquete tensorflow-gpu instalado desde conda actualmente viene incluido con CUDA 9.2.

Cuando se le preguntó sobre el tema, un dev respondió ,

La respuesta a por qué son los problemas de controladores en los requeridos por 9.1, no muchas características nuevas que necesitamos en cuda 9.1, y algunos problemas menores más.

Por lo tanto, la razón parece bastante imprecisa: podría significar que CUDA 9.1 (y 9.2) requiere un controlador de tarjeta gráfica que quizás sea demasiado reciente para ser realmente conveniente, pero esa es una suposición sin educación.

Si NVidia tiene razón sobre la compatibilidad binaria, puede intentar simplemente cambiar el nombre o vincular su biblioteca CUDA 9.2 como una biblioteca CUDA 9.0 y debería funcionar. Pero me gustaría guardar todo mi trabajo antes de intentar esto ... y el hecho de que la gente vaya tan lejos como para compilar tensorflow para admitir las versiones posteriores de CUDA puede ser una pista sobre cómo podría terminar esto.

4
P-Gn

Cuando descarga TF, descarga un archivo binario pre-construido. En el proceso de compilación, TF está enlazado en una versión específica de Cuda, por lo que no se puede usar con diferentes versiones de cuda.

Si desea trabajar con la nueva versión (o, a veces, más antigua) de cuda, necesitará instalar TF desde la fuente ( ver cómo aquí ) O, si realmente no quiere construir usted mismo, verifique En estos repos, hay otros que publican binarios específicos de TF, algunos ejemplos:

Para su comodidad, agrego aquí las versiones de CUDA + cuDNN que se requieren para cada versión de Tensorflow precompilada:

(Escribo aquí solo sobre las versiones de TF con las que trabajé, quizás las versiones más antiguas de TF también usan versiones anteriores de CUDA)

  • antes TF v1.5 cuda 8.0 y cuDNN 6
  • comience desde: 1.5 - Los binarios pre-construidos ahora están construidos contra CUDA 9 y cuDNN 7.
3
Kings85

El problema no es con los controladores NVIDIA sino con Tensorflow. Pasé una hora tratando de hacer que funcionara, y finalmente me di cuenta de que si descargabas el binario precompilado de googleapi.com, es codificado por hardware para cargar libcudart.so.9.0! Si tiene instalado tanto cuda 9.0 como 9.2, tensorflow funcionará (pero en realidad está cargando las bibliotecas dinámicas desde 9.0). (Por cierto, instalé TF usando anaconda.)

Un enfoque más limpio es construir TF desde la fuente. No es demasiado complicado.

1
theCat