Para TensorFlow 2.4.1, el truco de cambio de nombre funcionará si es necesario instalar CUDA 11.2. Sugiero instalar CUDA 11.0 + cuDNN 8.0.4 para TF 2.4.1, como @lineage escribió anteriormente, y luego no será necesario cambiar el nombre y se reconocerá su GPU.
Para TensorFlow 2.5.0, acabo de reconocer mi GPU usando CUDA 11.2.2 + cuDNN 8.1.1. En ese caso, NO cambie el nombre del archivo cusolver. TF 2.5.0 espera el nombre de archivo "cusolver64_11.dll".
c> python Python 3.9.4 | packaged by conda-forge | (default, May 10 2021, 22:10:34) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf 2021-05-28 08:11:24.517894: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll >>> print(tf.version.VERSION) 2.5.0 >>> print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')), ... '\nDevice: ', tf.config.list_physical_devices('GPU')) 2021-05-28 08:12:19.501812: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library nvcuda.dll 2021-05-28 08:12:19.530869: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties: pciBusID: 0000:01:00.0 name: NVIDIA GeForce GTX 1080 with Max-Q Design computeCapability: 6.1 coreClock: 1.468GHz coreCount: 20 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 298.32GiB/s 2021-05-28 08:12:19.531377: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll 2021-05-28 08:12:19.597785: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll 2021-05-28 08:12:19.597992: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll 2021-05-28 08:12:19.618849: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cufft64_10.dll 2021-05-28 08:12:19.634321: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library curand64_10.dll 2021-05-28 08:12:19.677539: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library **cusolver64_11.dll** 2021-05-28 08:12:19.731541: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusparse64_11.dll 2021-05-28 08:12:19.746271: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll 2021-05-28 08:12:19.746674: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0 Num GPUs Available: 1 Device: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] >>>Yo tuve el mismo problema. Resulta que CUDA 11.0 contiene cusolver64_10.dll (probablemente por eso indican CUDA v11.0 en la guía de compilación de tensorflow aquí https://www.tensorflow.org/install/source_windows ). ¡Asegúrate de descargar cudnn también!
TL; DR Para TensorFlow ver> = 2.4.0 en Windows , instale exactamente las versiones de CUDA Toolkit y cuDNN resaltadas a continuación, es decir, las que se enumeran en los requisitos oficiales (v11.0 en lugar de v11.2)
En Windows , los requisitos de instalación de TensorFlow ^ en el momento de escribir este artículo son los que se indican aquí
Controladores de GPU NVIDIA®: CUDA® 11.0 requiere 450.x o superior.
Kit de herramientas CUDA®: TensorFlow es compatible con CUDA® 11 (TensorFlow >= 2.4.0)
CUPTI se envía con el kit de herramientas CUDA®.
cuDNN SDK 8.0.4 .
(Opcional) TensorRT 6.0 para mejorar la latencia y el rendimiento para la inferencia en algunos modelos.
El problema al que se enfrenta probablemente tenga que ver con la versión de CUDA® Toolkit. Tensorflow es exigente con la versión de las dependencias. Eche un vistazo dentro C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin **. Debería poder encontrar la mayoría^^ de los dll que necesita TensorFlow allí. Puede notar que contiene cusolver64_11.dll en lugar del cusolver64_10.dll esperado como se indica en el resultado.
Aunque el truco de cambio de nombre mencionado en una respuesta anterior funciona, no se garantiza que funcione de manera confiable todo el tiempo. La solución simple y correcta es instalar las dependencias correctas, para empezar.
Al momento de escribir, las versiones compatibles de CUDA Toolkit y cuDNN son
CUDA Toolkit 11.0 (May 2020) cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.0de entre la plétora de versiones disponibles de ambos, enumeradas aquí y aquí .
Las versiones más recientes (probé v11.0 en adelante) aún no son compatibles. Recuerdo haber tenido los mismos problemas con una versión anterior de TensorFlow hace unos años.
^ Para la versión > 1.15, TensorFlow tiene compatibilidad con GPU incluida de manera predeterminada, por lo tanto, los requisitos de CUDA. Cuando no está disponible, TensorFlow funciona bien, simplemente vuelve a la ejecución de la CPU.
** O donde haya instalado el kit de herramientas
^^ cudnn64_8.dll viene con cuDNN SDK
Move to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin Paso 2 Rename file cusolver64_11.dll To cusolver64_10.dll cusolver64_10.dll