我尝试将 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)
当然我正在尝试修复这个错误(尽管已经被问过已加载运行时 CuDNN 库:5005(兼容版本 5000),但源代码是使用 5103(兼容版本 5100)编译的 https://stackoverflow.com/questions/39859260/loaded-runtime-cudnn-library-5005-compatibility-version-5000-but-source-was-c)但我想了解这个错误。我总是尝试在发布(寻求帮助)之前尝试自己解决(编码)问题,但我什至很难开始这个问题,因为错误消息对我来说似乎有点神秘/不清楚,而且我似乎找不到理解错误含义的好资源。
为了理解该错误,我将重点放在似乎是错误开始的行上:
Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5103 (compatibility version 5100).
在阅读了一些似乎相关的 github 页面后,我意识到阅读如下错误实际上更有帮助:
已加载运行时 CuDNN 库:5005,但源代码是用 5103 编译的。
删除括号使错误更有意义(尽管我想了解/知道括号在错误消息中的作用以方便调试),因为它似乎加载了 CuDNN 库 5005 (在级别UNIX/OS),但 TensorFlow(用于 python)是用我猜的版本 5103 编译的。显然,如果 TensorFlow 库使用根据 5103 的 API,但使用“真正的”API 来与(cuda)深度学习对话CuDNN 库的版本是 5005,很明显这会是一个问题。尽管它们只是对正在发生的事情的猜测。
我的第一个困惑是,据我所知,不存在 CuDNN 5005 或 5103 这样的东西。如果能确切地理解这部分错误的含义,那就太棒了,这样我就可以开始尝试真正调试它。据我所知,当我使用时module list
我在用:
cudnn/5.0
我的第二个困惑是我忽略的括号及其含义:
Loaded runtime CuDNN library: 5005 (compatibility version 5000)
but source was compiled with 5103 (compatibility version 5100)
老实说,我不知道“兼容版本 XXXX”是什么意思。也许它建议为 CuDNN 安装版本 5000(无论这意味着什么)(这仍然令人困惑,因为没有 5000 版本的 CuDNN)并编译使用 CuDNN 版本 5100 的 TensorFlow 版本(以某种方式)。
有人更准确地知道这些错误的确切含义(并为我链接的问题提供解决方案吗?)