无法在仅用于 CPU 的 tensorflow 安装上加载动态库‘ cudart64_101.dll’

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

W tensorflow/stream _ Execator/Platform/default/dso _ loader. cc: 55]无法加载动态库‘ cutart64 _ 101.dll’; dlerror: 未找到 cadart64 _ 101.dll

这很糟糕吗? 我该怎么修复这个错误?

416958 次浏览

张量流2.1 +

发生什么事了?

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

2020-01-2012:27:44.554767: W tensorflow/stream _ Execator/Platform/default/dso _ loader. cc: 55]无法加载动态库‘ cutart64 _ 101.dll’; dlerror: cadart64 _ 101.dll 未找到

2020-01-2012:27:44.554964: I tensorflow/stream _ Executive/cuda/cutart _ stub. cc: 29] 如果你的机器上没有设置图形处理器,忽略上面的错误。2020-01-2012:27:44.554964: I tensorflow/stream _ Executive/cuda/cadart _ stub. cc: 29] 如果你的机器上没有设置图形处理器,忽略上面的错误。

我该担心吗,我该怎么补救?

如果你的机器上没有支持 CUDA 的图形处理器,或者你不在乎没有 GPU 加速,不用担心。另一方面,如果你安装了张量流和 GPU 加速,检查你的 CUDA 安装(TF 2.1需要 CUDA 10.1没有10.2或10.0)。

如果您只是想摆脱警告,您可以使用 调整 TF 的日志记录级别来禁止警告,但这可能有些过分,因为它将使 所有警告无效。


Tensorflow 1.X 或2.0:

您的 CUDA 安装程序已中断,请确保您安装了正确的版本。

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

  1. 安装最新的 GPU 驱动程序。
  2. 安装 CUDA 10.1
    • 如果 CUDA 安装程序报告“您正在安装一个较旧的驱动程序版本”,您可能希望选择一个自定义安装并取消选择一些组件。实际上,需要注意的是,TensorFlow 并不需要与 CUDA 绑定的软件,包括 GeForce 体验、 PhysX、显示驱动程序和 Visual Studio 集成。
    • 还要注意的是,TensorFlow 需要一个特定版本的 CUDA 工具包,除非你从源代码构建; 对于 TensorFlow 2.1和2.2,这是目前的版本10.1。
  3. 安装 cuDNN。
    1. 为 CUDA 10.1下载 cuDNN v7.6.4。这将需要您注册 NVIDIA 开发程序。
    2. 将压缩文件解压到合适的位置,并将 bin 目录添加到 PATH 中。
  4. 通过 pip install tensorflow安装张量流。
  5. 可能需要重新启动您的电脑

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

在哪里我选择安装类型: Exe (本地)(为窗口)和安装10.1在自定义模式(没有视觉工作室集成,NVIDIA PhysX,因为以前我安装 CUDA 10.2,所以所需的依赖性是自动安装)

安装后,从以下路径 (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin) 在我的例子中,我复制了 cudart64_101.dll文件并粘贴了 (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin).

然后进口 Tensorflow 工作顺利。

这个 解决方案为我工作:

我用 anaconda 预先安装了环境(这里是代码)

conda create -n YOURENVNAME python=3.6 // 3.6> incompatible with keras
conda activate YOURENVNAME
conda install tensorflow-gpu
conda install -c anaconda keras
conda install -c anaconda scikit-learn
conda install matplotlib

但在我还有这些警告之后

2020-02-23 13:31:44.910213: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found


2020-02-23 13:31:44.925815: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll


2020-02-23 13:31:44.941384: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll


2020-02-23 13:31:44.947427: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll


2020-02-23 13:31:44.965893: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll


2020-02-23 13:31:44.982990: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll


2020-02-23 13:31:44.990036: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found

我是如何解决第一个警告的: 我刚刚下载了一个 zip 文件,里面包含了所有的 cudnn 文件(dll,etc) : < a href = “ https://developer.nvidia.com/cudnn”rel = “ nofollow norefrer”> https://developer.nvidia.com/cudnn

我是如何解决第二个警告的: 我在 conda 创建的虚拟 env 中查看了最后一个丢失的文件(cadart64 _ 101.dll) ,我只是将它复制/粘贴到相同的 lib 文件夹中。我叫 Cudnn

一种更简单的方法是创建一个名为 cudart64_101.dll的链接来指向 cudart64_102.dll。这不是非常正统,但因为 TensorFlow 正在寻找 cudart64_101.dll输出的符号和 nvidia 的人不是业余的,他们很可能不会删除符号从101到102。基于这个假设(里程可能有所不同) ,它是可行的。

Tensorflow 2.1适用于 Cuda 10.1。

如果你想快速入侵:

  • 只需从 给你下载 cudart64_101.dll。解压缩文件并将 cudart64_101.dll复制到您的 CUDA bin目录

其他:

  • 安装 Cuda 10.1

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

  1. Dll-files.com/cudart64_100.dll

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

就这么简单! 你可以再检查一下是否有用:

import tensorflow as tf
tf.config.experimental.list_physical_devices('GPU')

张量流 gpu 2.2和2.3每晚

(沿 CUDA 工具包11.0 RC)

为了解决与 OP 相同的问题,我只需要在磁盘上找到 Cudart64 _ 101. dll(在我的例子中是 C: 程序文件英伟达为 nvStreamsrv)并将其作为变量环境添加(即将值 C: Program Files NVIDIA Corporation NvStreamSrv) cutart64 _ 101. dll添加到用户的环境变量 路径)。

能够通过更新 NVIDIA 设备驱动程序到最新版本(v446.14)来解决这个问题。 NVIDIA 驱动程序下载 这里有链接

TensorFlow 2.3.0在 CUDA 11中工作得很好,但是你必须安装 tf-night-gpu (在你安装了 tensorFlow 和 CUDA 11之后) : Https://pypi.org/project/tf-nightly-gpu/

试试:

pip install tf-nightly-gpu

然后你会在你的控制台得到这个消息:

I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_110.dll

如果你看到上面的错误,这个答案可能会有帮助,但是实际上你已经安装了 CUDA 10:

pip install tensorflow-gpu==2.0.0

产出:

I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll

这就是我的解决办法。

在我的例子中,张量流的安装正在寻找 cudart64 _ 101.dll

enter image description here

Cudart 64 _ 101的101部分是 Cuda 版本——这里101 = 10.1

我已经下载了11.x,所以我系统上的 cudart64的版本是 cudart64 _ 110. dll

enter image description here

这是错误的文件

解决方案

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

安装(我的程序在 NSight Visual Studio 集成时崩溃,所以我关闭了它)

enter image description here

当安装完成后,你应该有一个 Cuda 10.1文件夹,并在垃圾桶的 dll 系统抱怨丢失

enter image description here

检查到10.1 bin 文件夹的路径是否注册为系统环境变量,因此在加载库时将检查该路径

enter image description here

如果路径没有被系统直接拾取,您可能需要重新启动

enter image description here

我安装了 Cudatoolkit 11和 copy dll C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin呼叫 C:\Windows\System32。 它修复了 PyCharm,但没有修复蟒蛇木星:

[ name: “/device: CPU: 0”device _ type: “ CPU”memory _ limit: 268435456 Locality {}化身: 6812190123916921346,名称: “/device: GPU: 0” Device _ type: “ GPU”memory _ limit: 13429637120 locality { bus _ id: 1
Link {}化身: 18025633343883307728 body _ device _ desc: ”设备: 0,名称: Quadro P5000,pci 总线 id: 0000.02:00.0,计算 能力: 6.1”]

下载 CUDA Toolkit 11.0 RC

为了解决这个问题, 我刚在我的磁盘上找到了 Cudart64 _ 101.dll (C: Program Files 英伟达为 nvStreamsrv) ,并将其作为可变环境添加为用户的环境变量路径(cudart64 _ 101.dll)。

我遇到了这个问题时,混合 pip 和 conda 得到张量流2.3安装。(在 conda 的 tensorflow 2.3的安装被破坏时,我使用 pip 安装了 tensorflow 2.3 b/c。)

我最终安装了不正确的 Cudatoolkit 和 Cudnn 版本。

为了解决这个问题,我简单地用特定版本的 cudatoolkit 和 cuda 做了 conda install

https://www.tensorflow.org/install/source_windows?force_isolation=true#tested_build_configurations中可以找到张量流、 Cudatoolkit 和 Cuda 版本的信息,这些应该一起工作。

这可能是由于您正在运行的 python 版本造成的,我在使用来自微软商店的 python 3.7时遇到了这个错误,切换到 python 3.10修复了它。

这只是一个无法找到 CUDA 库的 Warning 和 I信息消息。

如果您使用的是 NVIDIA 图形处理器,您可以参考如何安装丢失的文件。

如果你不使用 NVIDIA 图形处理器,或者只是想忽略 IW消息,你可以在代码的开头添加以下两行:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

你可以在 张量流测井上看到更多关于 TF_CPP_MIN_LOG_LEVEL的信息。

enter image description here

我有这个错误在这里与张量板,它发生后,我更新的 GPU 驱动程序 问题是,我从 cmd 运行张量板,我没有安装任何 CUDA,因为我使用蟒蛇 如果你没有在安装 TensorFlow 的地方使用 anaconda env,你将会错过这些文件

enter image description here

解决方案

* Just open tensoboard from anaconda

1-或者直接下载最后一个 Cuda 工具包并将其添加到路径

Https://developer.nvidia.com/cuda-toolkit-archive

用这个 2-conda install -c anaconda cudatoolkit

然后重新启动你的电脑

我也面临过类似的问题,并意识到这个问题是与 CUDA 和 CUDNN 版本不匹配。

可以参考 给你获得正确的版本。从以下关于 TensorFlow 2.4.0的参考资料推荐使用 CUDA 11.0和 cuDNN 8.0。 CUDA & CUDNN reference for TensorFlow

或者你可以参考 给你下载 cuDNN 适合 CUDA。 cuDNN for CUDA