Tensorflow无法识别cudart64_101.dll。

6

我在路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\cudart64_101.dll 中有一个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)。也许这就是问题所在?我该如何解决呢? - Omer Lubin
此时我建议完全删除CUDA包(10.1和10.2),因为同时拥有两个可能不是一个好主意。卸载后,请确保检查所有文件夹,以确保没有留下任何东西。请按照Windows的安装说明进行操作,网址为https://towardsdatascience.com/installing-tensorflow-with-cuda-cudnn-and-gpu-support-on-windows-10-60693e46e781。 - bsquare
@Omer Lubin,请问您能否确认上述评论中提到的错误是否已解决。如果没有,能否分享当前状态,以便我可以帮助您。谢谢! - user11530462
我有同样的问题。@OmerLubin,你解决了吗? - revy
@revy 我没有。我放弃了,安装了tensorflow docker。如果您不熟悉docker,可以将其视为小型轻量级虚拟机。tensorflow docker已经设置好,只需要安装docker软件和NVIDIA Docker支持即可。您可以在此处阅读有关它的信息:https://www.tensorflow.org/install/docker - Omer Lubin
显示剩余2条评论
1个回答

15
在我的情况下,问题出在Python是从Windows商店安装的! 请参考tensorflow的GitHub(问题36111)@smreichling的评论:

问题的原因是我安装的Python版本来自Microsoft Store,而不是python.org。事实证明,从Microsoft Store安装的应用程序都被沙盒化了。Windows对它们加载DLL文件的限制非常严格。在这些限制中,Windows不会在PATH环境变量指定的目录中搜索DLL文件。因此,应用商店版本的Python将无法通过这种方式找到CUDA DLL文件。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接