我刚刚通过 pip install tensorflow
安装了最新版本的 Tensorflow,每当我运行程序时,都会收到以下日志消息:
W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 无法加载动态库 'cudart64_101.dll'; dlerror: 未找到 cudart64_101.dll
这很糟糕吗?如何修复错误?
张量流 2.1+
这是怎么回事?
使用 new Tensorflow 2.1 release,默认的 tensorflow
pip 包包含 TF 的 CPU 和 GPU 版本。在以前的 TF 版本中,找不到 CUDA 库会发出错误并引发异常,而现在库会动态搜索正确的 CUDA 版本,如果找不到,则会发出警告(W< /strong> 开头代表警告,错误有一个 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 not found 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)。
如果您只是想消除警告,您可以 adapt TF's logging level 抑制警告,但这可能有点过头了,因为它会使 所有 警告静音。
TensorFlow 1.X 或 2.0:
您的 CUDA 设置已损坏,请确保您安装了正确的版本。
要在 TensorFlow 2.1 中安装 GPU 支持的先决条件:
安装最新的 GPU 驱动程序。安装 CUDA 10.1。如果 CUDA 安装程序报告“您正在安装较旧的驱动程序版本”,您可能希望选择自定义安装并取消选择某些组件。实际上,请注意,TensorFlow 不需要与 CUDA 捆绑的软件,包括 GeForce Experience、PhysX、显示驱动程序和 Visual Studio 集成。另请注意,除非您从源代码构建,否则 TensorFlow 需要特定版本的 CUDA Toolkit;对于 TensorFlow 2.1 和 2.2,当前版本为 10.1。安装 cuDNN。下载 CUDA 10.1 的 cuDNN v7.6.4。这将要求您注册 NVIDIA 开发者计划。解压到合适的位置并将 bin 目录添加到您的 PATH 中。通过 pip install tensorflow 安装 tensorflow。您可能需要重新启动 PC。
nvidia-smi
显示给我 CUDA Version: 11.2
(TF 2.4 需要 CUDA 11)但我的 TF 实际安装和使用的 CUDA 版本是 10.1。因此,切勿跳过 CUDA 安装步骤,并始终确保您的 PATH 设置正确。
TensorFlow 2.3.0 在 CUDA 11 上运行良好。但您必须安装 tf-nightly-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
tf-nightly-gpu
,2)使用自定义安装安装最新的 nvidia cuda 工具包(11.2+),但不要覆盖较新的驱动程序(取消选择),3)重新启动终端。 4) 如果上述步骤失败,请重新安装 Nvidia 驱动程序。例如,nvidia-smi 结果为 Failed to initialize NVML: GPU access blocked by the operating system
。
我用另一种方式解决了这个问题。首先,我从这个 link 安装了 cuda 10.1 工具包。
我选择了安装程序类型:exe(local)(适用于 Windows)并以自定义模式安装了 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 Computing Toolkit\CUDA\v10.2\bin
)。
然后导入 Tensorflow 工作顺利。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
添加到 PATH
也可以(并且是推荐的方法,以避免弄乱 CUDA 安装)
在我的情况下,张量流安装正在寻找 cudart64_101.dll
https://i.stack.imgur.com/99IEu.png
cudart64_101 的 101 部分是 Cuda 版本 - 这里 101 = 10.1
我下载的是11.x,所以我系统上的cudart64版本是cudart64_110.dll
https://i.stack.imgur.com/QNzGY.png
这是错误的文件!! cudart64_101.dll ≠ cudart64_110.dll
解决方案
从 https://developer.nvidia.com/ 下载 Cuda 10.1
安装(我的 NSight Visual Studio 集成崩溃了,所以我把它关掉了)
https://i.stack.imgur.com/vxgQf.png
安装完成后,您应该有一个 Cuda 10.1 文件夹,并且在 bin 中系统抱怨缺少 dll
https://i.stack.imgur.com/WWEGf.png
检查10.1 bin文件夹的路径是否注册为系统环境变量,所以加载库的时候会检查
https://i.stack.imgur.com/jdTpl.png
如果系统没有立即选择路径,您可能需要重新启动
https://i.stack.imgur.com/Wcpkt.png
在 conda
环境中,这解决了我的问题(我缺少 cudart64-100.dll
:
从 dll-files.com/CUDART64_100.DLL 下载它 将它放在我的 conda 环境中 C:\Users\
这就是全部!您可以仔细检查它是否正常工作:
import tensorflow as tf
tf.config.experimental.list_physical_devices('GPU')
如果您看到上述错误但实际上您安装了 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
这对我来说是解决方案。
我安装了 cudatoolkit 11 并将 dll C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin
复制到 C:\Windows\System32
。它适用于 PyCharm,但不适用于 Anaconda jupyter:
[名称:“/设备:CPU:0”设备类型:“CPU”内存限制:268435456位置{}化身:6812190123916921346,名称:“/设备:GPU:0”设备类型:“GPU”内存限制:13429637120位置{总线ID:1链接{ } } 化身:18025633343883307728 physical_device_desc:“设备:0,名称:Quadro P5000,pci 总线 ID:0000:02:00.0,计算能力:6.1”]
Tensorflow 2.1 与 Cuda 10.1 一起使用。
如果你想快速破解:
只需从这里下载 cudart64_101.dll。解压 zip 文件并将 cudart64_101.dll 复制到您的 CUDA bin 目录
别的:
安装 Cuda 10.1
bin
目录在哪里?
这个 solution 对我有用:
我用 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
我是如何解决第一个警告的:我只是在这里下载了一个包含所有 cudnn 文件(dll 等)的 zip 文件:https://developer.nvidia.com/cudnn
我如何解决第二个警告:我在 conda 创建的虚拟环境中查看了最后一个丢失的文件(cudart64_101.dll),我只是将它复制/粘贴到与 .dll cudnn 相同的 lib 文件夹中
TensorFlow GPU 2.2 和 2.3 每晚
(沿 CUDA Toolkit 11.0 RC)
为了解决与 OP 相同的问题,我只需要在我的磁盘上找到 cudart64_101.dll(在我的情况下为 C:\Program Files\NVIDIA Corporation\NvStreamSrv)并将其添加为变量环境(即添加值 C:\Program Files \NVIDIA\Corporation\NvStreamSrv)cudart64_101.dll 到用户的环境变量 Path)。
下载 CUDA 工具包 11.0 RC
为了解决这个问题,我只是在我的磁盘上找到 cudart64_101.dll (C:\Program Files\NVIDIA Corporation\NvStreamSrv) 并将其添加为变量环境,即增值 (C:\Program Files\NVIDIA\Corporation\NvStreamSrv)cudart64_101 .dll 到用户的环境变量路径)。
我在混合 pip 和 conda 以安装 tensorflow 2.3 时遇到了这个问题。 (我使用 pip 安装 tensorflow 2.3 b/c 时 conda 的 tensorflow 2.3 安装被破坏。)
我最终安装了错误版本的 cudatoolkit 和 cudnn。
为了解决这个问题,我只是做了 conda install
并指定了特定版本的 cudatoolkit 和 cuda。
查看 https://www.tensorflow.org/install/source_windows?force_isolation=true#tested_build_configurations 以获取有关 tensorflow、cudatoolkit 和应该协同工作的 cuda 版本的信息。
这也可能是由于您正在运行的 python 版本引起的,我使用的是 microsoft store 中的 python 3.7,我遇到了这个错误,切换到 python 3.10 修复了它。
一种更简单的方法是创建一个名为 cudart64_101.dll
的链接以指向 cudart64_102.dll
。这不是很正统,但由于 TensorFlow 正在寻找 cudart64_101.dll
导出的符号,并且 nvidia 人员不是业余爱好者,他们很可能不会删除从 101 到 102 的符号。基于此假设(里程可能会有所不同),它是有效的。
不定期副业成功案例分享