Windows上的TensorFlow:“无法打开CUDA库cudnn64_5.dll”

Tensorflow刚刚发布了Windows支持。 我安装了gpu版本和CUDA 8.0和python 3.5。 但是,在我导入tensorflow后,我得到了以下错误:

>>> import tensorflow I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cudnn64_5.dll I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN DSO I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally 

有人可以帮忙吗? 谢谢!

Solutions Collecting From Web of "Windows上的TensorFlow:“无法打开CUDA库cudnn64_5.dll”"

TL; DR:要在TensorFlow中使用cuDNN,文件cudnn64_5.dll必须位于%PATH%环境变量中的一个目录中。 请注意,cuDNN是从CUDA单独下载的,您必须下载cuDNN版本5.1。

首先,请注意,cuDNN不会与其他CUDA工具包一起分发,所以您需要从NVIDIA网站上单独下载。 在Windows上,它是作为一个ZIP压缩文件分发的,所以你必须解压缩它并找到包含cudnn64_5.dll的目录。 例如,如果将其解压缩到C:\tools\cuda ,该DLL将位于C:\tools\cuda\bin\cudnn64_5.dll 。 最后,您可以通过在命令提示符处键入以下内容将其添加到路径中:

 C:\> set PATH=%PATH%;C:\tools\cuda\bin C:\> python ... >>> import tensorflow as tf 

除了上面的答案之外,请确保您已经下载了受支持的cuDNN版本。 目前TensorFlow支持较旧的cuDNN v.5.1,而在Nvidia网站上有一个较新的cuDNN 6.0。 我有这样的错误6.0。 当我回滚到5.1的一切工作。

  • 检查TensorFlow需求在这里: https : //www.tensorflow.org/install/install_windows
  • 从这里下载支持的cuDNN版本: https : //developer.nvidia.com/rdp/cudnn-download

我有这个问题,我花了几次尝试来解决它。 这个答案适用于Windows 64上的Python 64,我也有安装了Python 3.6的VS2017

从干净的Windows 64机器安装Visual Studio 2015(注意:不是vs2017 – 至少现在还没有)。 社区版是免费的。 确保你安装了C ++编译器。 你将需要这个编译未来的Python库。

这也将清理msvcp140.dll或msvcrt * .dlls的任何问题。 或者,您可以安装VC Redistributable(但我建议安装VS2015,因为这将允许您编译和安装未来的Python库)。

接下来,安装VS2017,这次也选择Python和Data Learning(scikit)。 这将默认使用Python 3.6(使用VS2015构建)安装Anaconda。 还有一些有用的功能

*还要确保你有一个兼容的Nvidia卡(见前面的答案)

然后确保您的计算机上安装了最新的Nvidia驱动程序。

然后确保你已经安装了Google和其他人提到的Nvidia库,包括Cuda bin。

*从tensorflow 1.2开始,支持Python 3.6,所以创建Python 3.5环境的注意事项不再需要了

我遇到了一些与tensorflow 1.2相关的问题。 我也在我的环境中尝试过tensorflow 1.31rc2

问题#1 – 防火墙(对于防火墙后面的人)

这将阻止通过“pip安装”进行安装要解决这个问题,请添加–trusted-host pypi.python.org

例如

pip install tensorflow-gpu –trusted-host pypi.python.org

问题#2 – 升级到numpy 1.13.1

安装tensorflow将升级到numpy 1.13.1的不兼容版本(至少在我的Windows机器上)。 为了解决这个问题,请在http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy上下载轮子,查找numpy-1.13.1 + mkl-cp36-cp36m-win_amd64.whl

安装tensorflow 之前安装这个轮子。 这将阻止tensorflow安装numpy 1.13.1包的不兼容版本

注意:请参阅如何在其他帖子中安装轮子(pip install fullpath_of_wheel)

注意:如果您已经安装了tensorflow,请确保使用pup install使用–upgrade选项强制进行升级)

问题3 – Nvidia cuda包在不同的位置

要测试您是否具有正确的CU * .DLL包,请使用“where”命令(从C:\命令提示符)

cublas64_80.dll在哪里

其中cudnn64_5.dll

cufft64_80.dll在哪里

其中nvcuda.dll

哪里curand64_80.dll

其中cusolver64_80.dll

如果你的机器和我的一样,你会发现这些DLL在多个位置,有时甚至不存在。 例如,cublas64_80.dll被发现在我的c:\ program files \ Anaconda3目录下,在我的c:\ system32 \ windows下有nvcuda.dll等等。 如果你已经安装了matlab,它将有自己的版本。 CNTK也有自己的版本。 Nvidia会把它们放在另一个目录中。 这又是一个问题。 正如其他人所提到的,你需要的一些DLL是由Nvidia提供的一个zip文件。

而不是试图修复你的路径,我建议先尝试这个

收集上面提到的6个DLL,并将它们放在一个目录中,如c:\ tfexperiment

然后cd到c:\ tfexperiment

从这个位置运行python.exe。 Windows现在将首先查找当前路径中的dll

现在一旦python加载输入

将tensorflow导入为tf

它应该为你工作(希望)。 这是我能够在我的机器上运行的唯一方法。 如果你得到这么多,你可以简单地在路径环境变量中添加c:\ tfexperiment作为第一个路径。 或者你可以找出正确的路径顺序。

如果它仍然不起作用,可以通过从Microsoft下载procmon.exe来进一步进行。 运行procmon.exe。 筛选可执行文件python.exe(对不起,我没有时间来解释如何使用procmon)。 现在回到你的python提示符并再次输入“import tensorflow as tf”。 procmon应该有很多信息。 你可能想过滤loadimage。 这将告诉你它正在加载什么DLL。 请注意,.pyd扩展名也是DLL。 加载(或加载失败)的最后一个.dll可能是导致问题的那个。

您必须下载系统的cudnn ,并将其解压缩到CUDA_PATH中

我的CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

对于那些因为:

 I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cublas64_80.dll I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS DSO. I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cufft64_80.dll I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DSO. I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library curand64_80.dll I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND DSO. 

您需要添加CUDA常规路径。 我不知道他们为什么不把它们放在一起作为一个下载。 非常愚蠢。

 C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin 

还要确保没有其他cudnn64_5.dll (错误的版本)坐在另一个路径。

因此,如果您将DLL放入...\CUDA\v8.0\bin中,请记住,不要将旧版本更新到...\CuDNN\v5.1\bin从另一个目录。

我刚刚从这个网站下载了cuda.dll文件: https : //developer.nvidia.com/cudnn

然后将解压缩后的文件夹移到我的其他anaconda库所在的位置。

我使用pycharm,所以很容易看到所有的外部库存储在anaconda中。 希望这可以帮助!