【发布时间】:2021-04-12 23:07:24
【问题描述】:
当我跑步时
import tensorflow as tf
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
我收到以下错误
【问题讨论】:
标签: python tensorflow gpu
当我跑步时
import tensorflow as tf
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
我收到以下错误
【问题讨论】:
标签: python tensorflow gpu
对于 TensorFlow 2.4.1,如果需要安装 CUDA 11.2,重命名 hack 将起作用。我建议为 TF 2.4.1 安装 CUDA 11.0 + cuDNN 8.0.4,正如@lineage 上面写的那样,然后就不需要重命名了,你的 GPU 会被识别。
对于 TensorFlow 2.5.0,我刚刚使用 CUDA 11.2.2 + cuDNN 8.1.1 识别了我的 GPU。在这种情况下,请勿重命名 cusolver 文件。 TF 2.5.0 需要“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')]
>>>
【讨论】:
TL;DR 对于Windows 上的TensorFlow ver >= 2.4.0,请安装下面突出显示的CUDA Toolkit 和cuDNN 的版本,即官方要求中列出的版本。(v11.0 与v11.2)
在Windows 上,TensorFlow^ 在撰写本文时的安装要求如 here 所述
NVIDIA® GPU 驱动程序 —CUDA® 11.0 需要 450.x 或更高版本。
CUDA® Toolkit —TensorFlow 支持 CUDA® 11 (TensorFlow >= 2.4.0)
CUPTI 附带 CUDA® 工具包。
cuDNN SDK 8.0.4。
(可选)TensorRT 6.0 可改善某些模型的推理延迟和吞吐量。
您面临的问题可能与 CUDA® Toolkit 的版本有关。 Tensorflow 对依赖的版本很挑剔。看看里面C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin**。您应该能够在那里找到TensorFlow 所需的大多数 ^^ dll。您可能会注意到它包含 cusolver64_11.dll,而不是输出中所述的预期 cusolver64_10.dll。
尽管上述答案中提到的重命名技巧有效,但不能保证始终可靠地工作。简单而正确的解决方案是首先安装正确的依赖项。
在撰写本文时,CUDA Toolkit 和 cuDNN 的兼容版本是
CUDA Toolkit 11.0 (May 2020)
cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.0
尚不支持更新的版本(我从 v11.0 开始测试)。我记得几年前使用早期版本的 TensorFlow 时遇到过同样的问题。
^ 对于版本 >1.15,TensorFlow 默认包含 GPU 支持,因此需要 CUDA。当不可用时,TensorFlow 工作正常 - 它只是恢复到 CPU 执行。
** 或安装工具包的任何位置
^^cudnn64_8.dll自带cuDNN SDK
【讨论】:
我遇到了同样的问题。事实证明,CUDA 11.0 包含 cusolver64_10.dll(这可能是他们在此处的 tensorflow 构建指南https://www.tensorflow.org/install/source_windows 中指出 CUDA v11.0 的原因)。确保也下载 cudnn!
【讨论】:
【讨论】:
New-Item -ItemType SymbolicLink -Path .\cusolver64_10.dll -Target .\cusolver64_11.dll