Tensorflow 无法识别 cudart64_101.dll

Posted

技术标签:

【中文标题】Tensorflow 无法识别 cudart64_101.dll【英文标题】:Tensorflow not recognising cudart64_101.dll 【发布时间】:2020-06-23 11:33:31 【问题描述】:

我在路径中有一个 DLL 文件:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\cudart64_101.dll,但TensorFlow 似乎无法识别它:

2020-03-11 14:39:19.815880: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found

我确保 PATH 变量包含 DLL 的路径:

>>> l = os.environ['PATH'].split(';')
>>> for s in l:
...     print(s)
...
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

奇怪的是,如果我用ctypes 手动包含它,它会成功加载:

>>> import ctypes
>>> hllDll = ctypes.WinDLL("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.1\\bin\\cudart64_101.dll")
>>> import tensorflow as tf
2020-03-11 15:05:26.907300: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll

这是为什么呢?我该如何解决?

【问题讨论】:

@Veeru 我安装了 cuda 10.1 和 10.2(10.2 在我的操作系统上使用,而 tf 2.1.0 支持 cuda 10.1)。也许这就是问题所在?我该如何解决? 此时我建议完全删除两个 CUDA 包(10.1 和 10.2),因为同时拥有这两个包可能不是一个好主意。卸载后,请确保检查所有文件夹,以免留下任何内容。请按照towardsdatascience.com/… 的 Windows 安装说明进行操作 @Omer Lubin,您能否通过上述评论确认错误是否已解决。否则,您能否分享当前状态,以便我可以帮助您。谢谢! 我也有同样的问题。你解决了吗,@OmerLubin? @revy 我没有。我放弃并安装了 tensorflow docker。如果你对 docker 不熟悉,可以把 docker 看作是小型轻量级虚拟机。 tensorflow docker 已经设置好了,只需要你安装 docker 软件和 NVIDIA Docker Support。你可以在这里阅读:tensorflow.org/install/docker 【参考方案1】:

就我而言,问题出在 python 是从 Windows 应用商店 安装的!

见@smreichling对tensorflow's GitHub (issue 36111)的评论:

问题原来是我安装的python版本是来自Microsoft Store的版本,而不是来自python.org的版本。事实证明,从 Microsoft Store 安装的应用程序是沙盒的。 Windows 严格限制了它们可以从何处加载 DLL。在restrictions 中:Windows 不会在PATH 环境变量中的目录中搜索DLL。所以应用商店 python 将永远无法以这种方式找到 CUDA DLL。

所以我安装了可从https://www.python.org 下载的那个。

【讨论】:

以上是关于Tensorflow 无法识别 cudart64_101.dll的主要内容,如果未能解决你的问题,请参考以下文章

即使安装了路径变量集,Tensorflow 也找不到“cudart64_90.dll”

Tensorflow 导入错误:找不到“cudart64_101.dll”(Windows 10)

如何修复由 Pycharm 中的 Tensorflow 引起的 cudart64_110.dll 错误?

tensorflow 安装: could no t load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll

安装tensorflow后报错Could not load dynamic library ‘cudart64_110.dll‘; dlerror:cudart64_110.dll not found

彻底解决tensorflow:ImportError: Could not find 'cudart64_90.dll' tensorflow安装