无法在仅 tensorflow CPU 安装上加载动态库“cudart64_101.dll”

GPh*_*ilo 113 python python-3.x keras tensorflow tensorflow2.0

我刚刚通过安装了最新版本的 Tensorflow pip install tensorflow,每当我运行程序时,我都会收到日志消息:

W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 无法加载动态库“cudart64_101.dll”;dlerror: 找不到 cudart64_101.dll

这很糟糕吗?如何修复错误?

GPh*_*ilo 115

TensorFlow 2.1+

这是怎么回事?

新的 Tensorflow 2.1 版本中,默认的tensorflowpip 包包含 TF 的 CPU 和 GPU 版本。在以前的 TF 版本中,找不到 CUDA 库会发出错误并引发异常,而现在库会动态搜索正确的 CUDA 版本,如果找不到,则会发出警告(开头的W表示对于警告,错误有一个E(或F表示致命错误)并回退到 CPU-only 模式。事实上,这也在警告之后作为信息消息写入日志(请注意,如果您有更高的默认的最低日志级别,您可能看不到信息消息。完整的日志是(强调我的):

2020-01-20 12:27:44.554767: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 无法加载动态库“cudart64_101.dll”;dlerror: 找不到 cudart64_101.dll

2020-01-20 12:27:44.554964: I tensorflow/stream_executor/cuda/cudart_stub.cc:29]如果你的机器上没有设置 GPU,请忽略上面的 cudart dlerror。

我应该担心吗?我如何解决它?

如果您的机器上没有支持 CUDA 的 GPU,或者您不在乎没有 GPU 加速,则无需担心。另一方面,如果您安装了 tensorflow 并想要 GPU 加速,请检查您的 CUDA 安装(TF 2.1 需要 CUDA 10.1而不是10.2 或 10.0)。

如果您只是想摆脱警告,您可以调整 TF 的日志记录级别来抑制警告,但这可能有点矫枉过正,因为它会使所有警告静音。


Tensorflow 1.X 或 2.0:

您的 CUDA 设置已损坏,请确保您安装了正确的版本。

  • 谢谢。但我补充一点:如果你从 **Microsoft Store** 安装了 python,即使你已经完成了所需的步骤,你仍然可能会看到这个问题!请参阅[我的答案](/sf/answers/4448358421/)。 (2认同)

Cha*_*sal 59

要在 TensorFlow 2.1 中安装 GPU 支持的先决条件:

  1. 安装最新的 GPU 驱动程序。
  2. 安装CUDA 10.1
    • 如果 CUDA 安装程序报告“您正在安装较旧的驱动程序版本”,您可能希望选择自定义安装并取消选择某些组件。实际上,请注意 TensorFlow 不需要与 CUDA 捆绑的软件,包括 GeForce Experience、PhysX、显示驱动程序和 Visual Studio 集成。
    • 另请注意,除非您从源代码构建,否则 TensorFlow 需要特定版本的 CUDA Toolkit;对于 TensorFlow 2.1 和 2.2,这是当前版本 10.1。
  3. 安装cuDNN。
    1. 下载适用于 CUDA 10.1 的cuDNN v7.6.4。这将要求您注册 NVIDIA 开发人员计划。
    2. 解压缩到合适的位置并将 bin 目录添加到您的 PATH。
  4. 通过 .tensorflow 安装 tensorflow pip install tensorflow
  5. 可能需要重新启动 PC

  • 6. 修改 PATH 变量后重新启动 IDE。 (5认同)
  • 谢谢。但我补充一点:如果你从 **Microsoft Store** 安装了 python,即使你已经完成了所需的步骤,你仍然可能会看到这个问题!请参阅[我的答案](/sf/answers/4448358421/)。 (3认同)
  • 注意:我有点困惑,安装最新的 GPU 驱动程序后,“nvidia-smi”显示“CUDA 版本:11.2”(TF 2.4 需要 CUDA 11),但我的 TF 实际安装和使用的 CUDA 版本是 10.1 。因此,切勿跳过 CUDA 安装步骤,并始终确保您的 PATH 设置正确。 (2认同)
  • 哇,重新启动我的电脑可以节省我 2 个小时。谢谢 :) (2认同)

Jen*_* Pu 23

TensorFlow 2.3.0 在 CUDA 11 上运行良好。但是你必须安装 tf-nightly-gpu(在你安装了 tensorflow 和 CUDA 11 之后):https ://pypi.org/project/tf-nightly-gpu/

尝试:

pip install tf-nightly-gpu
Run Code Online (Sandbox Code Playgroud)

之后,您将在控制台中收到消息:

I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_110.dll
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!我以为我必须回滚到 10.1。 (3认同)
  • 谢谢你!“pip install tf-nightly”为我解决了这个问题。 (2认同)

小智 13

我用另一种方式解决了这个问题。首先,我从此链接安装了 cuda 10.1 工具包

我选择安装程序类型(exe(本地))并在自定义模式下安装 10.1 意味着(没有 Visual Studio 集成,NVIDIA PhysX 因为以前我安装了 CUDA 10.2 所以需要的依赖项会自动安装)

安装后,从以下路径 (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin) ,在我的情况下,我复制了“cudart64_101.dll”文件并粘贴到 (C:\Program Files\ NVIDIA GPU 计算工具包\CUDA\v10.2\bin)。

然后导入 Tensorflow 工作顺利。

NB 抱歉英语不好

  • 请注意:将文件夹“C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v10.1\bin”添加到“PATH”也可以(并且是推荐的方法,以避免搞砸)带有 CUDA 安装) (2认同)

Nic*_*ais 11

conda环境中,这就是解决我的问题的原因(我错过了cudart64-100.dll

  1. dll-files.com/CUDART64_100.DLL下载

  2. 把它放在我的 conda 环境中 C:\Users\<user>\Anaconda3\envs\<env name>\Library\bin

这就是全部!您可以仔细检查它是否有效:

import tensorflow as tf
tf.config.experimental.list_physical_devices('GPU')
Run Code Online (Sandbox Code Playgroud)

  • 例如,如果您安装了 CUDA 10.1,则您可能已经在“C:\Program Files\NVIDIA GPU Compute Toolkit\CUDA\v10.1\bin\cudart64_101.dll”中拥有该 DLL。我个人反对从二手来源下载 DLL。 (6认同)

Mal*_*ine 9

在我的情况下,tensorflow 安装正在寻找 cudart64_101.dll

在此处输入图片说明

cudart64_101 的 101 部分是 Cuda 版本 - 这里 101 = 10.1

我下载的是11.x,所以我系统上cudart64的版本是cudart64_110.dll

在此处输入图片说明

这是错误的文件!!cudart64_101.dll ? cudart64_110.dll

解决方案

https://developer.nvidia.com/下载 Cuda 10.1

安装(我的 NSight Visual Studio 集成崩溃了,所以我把它关掉了)

在此处输入图片说明

安装完成后,您应该有一个 Cuda 10.1 文件夹,并且在 bin 中系统抱怨缺少 dll

在此处输入图片说明

检查10.1 bin文件夹的路径是否注册为系统环境变量,所以在加载库时会检查

在此处输入图片说明

如果系统没有立即选择该路径,您可能需要重新启动

在此处输入图片说明


She*_*zod 5

如果您看到上述错误,但实际上您安装了 CUDA 10,此答案可能会有所帮助:

pip install tensorflow-gpu==2.0.0
Run Code Online (Sandbox Code Playgroud)

输出:

I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
Run Code Online (Sandbox Code Playgroud)

这对我来说是解决方案。


小智 5

我安装了 cudatoolkit 11 并将 dll 复制 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\binC:\Windows\System32. 它针对 PyCharm 进行了修复,但针对 Anaconda jupyter 进行了修复:

[名称:“/device:CPU:0”device_type:“CPU”内存_限制:268435456局部性{}化身:6812190123916921346,名称:“/device:GPU:0”device_type:“GPU”内存_限制:13429637120局部性{bus_id:1个
链接{ } } incarnation: 18025633343883307728physical_device_desc: "设备: 0, 名称: Quadro P5000, pci 总线 id: 0000:02:00.0, 计算能力: 6.1" ]