我正在尝试使用TensorFlow GPU,但遇到了以下错误:
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K20m, pci bus id: 0000:02:00.0)
E tensorflow/stream_executor/cuda/cuda_dnn.cc:347] Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5103 (compatibility version 5100). If using a binary install, upgrade your CuDNN library to match. If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.
F tensorflow/core/kernels/conv_ops.cc:457] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
当然,我正在尝试修复这个错误(虽然已经有人问过了Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5103 (compatibility version 5100)),但我想理解这个错误。在发布(寻求帮助)之前,我总是试图自己解决(编码)问题,但这次我很难开始,因为错误信息对我来说有点神秘/不清楚,而且我似乎找不到一个好的资源来理解这个错误的含义。
为了理解这个错误,我关注了似乎是错误开始的那行代码:
Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5103 (compatibility version 5100).
阅读了一些相关的Github页面后,我意识到以下错误提示更有帮助:
已加载CuDNN运行时库:5005,但源代码是使用5103编译的。
去掉括号后,错误提示就更容易理解了(虽然我想知道括号在错误信息中的作用以便于调试)。显然,它在UNIX/OS级别上加载了CuDNN库5005,但(for python) TensorFlow是使用5103版本编译的。如果TensorFlow库正在使用根据5103编写的API,而与(CUDA)深度学习库CuDNN对话的"真实"API是5005版本,那么显然就会出现问题。尽管这只是我猜测发生的事情。
我的第一个困惑是,据我所知,不存在名为CuDNN 5005或5103的东西。如果能确切了解错误提示中这部分的含义,那么我就可以开始真正调试了。据我所知,当我使用module list
时,我正在使用的是:
cudnn/5.0
我的第二个困惑是我忽略的括号及其含义:
加载了运行时CuDNN库:5005(兼容性版本5000)
但源代码编译时使用的是5103(兼容性版本5100)
老实说,我不知道 "兼容性版本 XXXX " 是什么意思。也许这是建议安装 CuDNN 版本 5000(不管那是啥)并编译一个使用 CuDNN 版本 5100 的 TensorFlow 版本(不过这还是很困惑,因为没有 CuDNN 的 5000 版本)。有人更准确地知道这些错误的含义吗?并提供他们对我所链接问题的解决方案吗?