错误:“已加载运行时 CuDNN 库:5005 但源是用 5103 编译的”是什么意思?

2024-03-10

我尝试将 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

我的第二个困惑是我忽略的括号及其含义:

  1. Loaded runtime CuDNN library: 5005 (compatibility version 5000)
  2. but source was compiled with 5103 (compatibility version 5100)

老实说,我不知道“兼容版本 XXXX”是什么意思。也许它建议为 CuDNN 安装版本 5000(无论这意味着什么)(这仍然令人困惑,因为没有 5000 版本的 CuDNN)并编译使用 CuDNN 版本 5100 的 TensorFlow 版本(以某种方式)。

有人更准确地知道这些错误的确切含义(并为我链接的问题提供解决方案吗?)


这是对正在发生的事情的大概描述。

cuDNN 具有编号的主要版本,例如4.0、5.0、5.1 等

这些主要版本可能会包含 API 更改。因此,使用 cuDNN v4(即 4.0)的程序可能需要进行一些修改才能与 cuDNN v5(即 5.0)中的新功能配合使用或使用新功能。

主要版本编码在 4 位版本号的前两位数字中。因此 cuDNN 4 位版本号 5103 表示它属于 5.1 主要版本,子版本号为 03。兼容性出于目的,这样的版本应该与 51xx 的任何其他 cuDNN 库版本 API 兼容,因为它们都属于 5.1 主要版本(据我所知,这不能保证严格正确,但这是一般想法)。因此,任何版本号为 51xx 的库都会有兼容版本5100,表明它们属于(并且(应该)兼容)5.1 主要版本。

因此,当我们引用兼容性版本(该库与哪个主要版本兼容)时,我们只需要指定前两位数字 - 5000 表示 5.0,5100 表示 5.1。但一个发行版可能有一个非零的子发行版版本号。造成这种情况的原因可能有多种,例如允许错误修复版本等。

当程序(如张量流)被设计为使用 cuDNN 时,通常会对其进行编码以与特定版本的 cuDNN 配合使用。在某些情况下,这可以在编译时通过“编译”特定的 cuDNN 版本(及其关联的 API,即构建张量流时使用的头文件)来处理。因此,在编译时,像tensorflow这样的程序可以确定它是针对哪个版本的cuDNN API进行编译的,即4位版本(尽管一般来说,只有兼容性版本,即4位的前两位)版本应该真的很重要)。

在运行时,您的计算机上某处加载了特定版本的 cuDNN 库(例如 linux 上的 .so)。可以确定、查询和报告该库的版本。如果实际的库版本与tensorflow编译所针对的cuDNN库的版本不匹配(至少从兼容性版本的角度来看),那么这很好地表明事情可能无法正常工作,因此tensorflow在运行时会指出这一点:

已加载运行时 CuDNN 库:5005,但源代码是用 5103 编译的。

这是张量流告诉你“嘿,我被设计(编译)为与 cuDNN v5.1 一起使用,但你只给我 cuDNN 5.0 来使用”。

子版本级别的差异应该不太显着。如果您知道自己在做什么,则即使您的张量流是针对版本 5103 编译的,也可以使用 cuDNN 运行时版本 5107。这只是一个假设的示例,但这表明库中存在一些差异,而并非如此旨在更改适当的功能或行为,或 API 接口。例如,它可能只是 5103 的错误修复版本(假设性的。这是一个虚构的例子。)

在理想情况下,您将针对您正在使用的 cuDNN 版本构建张量流。但是,如果您已经下载了预构建的张量流包,那么您可能会看到此类消息(因为您大概是单独下载了 cuDNN)。在这种情况下,您至少应该寻求将您正在使用的 cuDNN 主要版本与 tensorflow 期望的兼容性版本相匹配。在这个特定的示例中,您没有这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:“已加载运行时 CuDNN 库:5005 但源是用 5103 编译的”是什么意思? 的相关文章

  • 在云服务器中运行 python 脚本的最简单方法是什么?

    我有一个网络爬行 python 脚本 需要几个小时才能完成 并且无法在我的本地计算机上完整运行 有没有一种方便的方法可以将其部署到简单的 Web 服务器 该脚本基本上将网页下载到文本文件中 如何最好地实现这一点 谢谢 既然你说性能是一个问题
  • 如何在多个端口上运行 FastAPI 应用程序?

    我有一个 FastAPI 应用程序 正在使用 Uvicorn 以编程方式在端口 30000 上运行 现在我也想在端口 8443 上运行相同的应用程序 相同的应用程序需要在这两个端口上运行 我怎样才能在Python代码中做到这一点 最小可重现
  • python 线程是如何工作的?

    我想知道 python 线程是并发运行还是并行运行 例如 如果我有两个任务并在两个线程中运行它们 它们是同时运行还是计划同时运行 我知道GIL并且线程仅使用一个 CPU 核心 这是一个复杂的问题 需要大量解释 我将坚持使用 CPython
  • 将numpy字符串数组转换为int数组[重复]

    这个问题在这里已经有答案了 我有一个 numpy ndarray a 0 99 0 56 0 56 2 02 0 96 如何将其转换为int 输出 a 0 99 0 0 0 56 0 56 2 02 0 96 我想要 0 0 代替空白 im
  • Python 中意外的缩进错误[重复]

    这个问题在这里已经有答案了 我有一段简单的代码 我不明白我的错误来自哪里 解析器在第 5 行 if 语句 上用意外的缩进向我咆哮 有人看到这里的问题吗 我不 def gen fibs a b 0 1 while True a b b a b
  • Python 有哪些重要的语言特性(习语)需要尽早学习[重复]

    这个问题在这里已经有答案了 我有兴趣了解 StackOverflow 社区认为 Python 的重要语言特性 习语 是什么 将程序员定义为 Pythonic 的特征 Python pythonic 习语 Python 语言自然的或特有的 代
  • TensorFlow 未编译为使用 SSE(等)指令,但这些指令是可用的

    我第一次使用一些示例代码运行 TensorFlow 运行代码时我收到以下警告 有谁知道为什么会发生这种情况以及如何解决它 2017 03 31 02 12 59 346109 W c tf jenkins home workspace re
  • Python pandas cumsum() 在达到最大值后重置

    我有一个 pandas DataFrame 其中 timedeltas 作为这些增量的累积和 在单独的列中以毫秒表示 下面提供了一个示例 Transaction ID Time TimeDelta CumSum ms 1 00 00 04
  • 使用 openCV 和 python 检测物体

    我正在尝试使用 OpenCV 和 Python 检测下图中的白点 我尝试使用函数 cv2 HoughCircles 但没有成功 我需要使用不同的方法吗 这是我的代码 import cv2 cv import numpy as np impo
  • 如何使用生成器遍历文件系统?

    我正在尝试创建一个实用程序类来遍历目录中的所有文件 包括子目录和子子目录中的文件 我尝试使用发电机 因为发电机很酷 然而 我遇到了困难 def grab files directory for name in os listdir dire
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • 使用 PyQt4 在 QWidget 上进行 eventFilter

    我有一个 QMainWindow 其中包含DrawingPointsWidget 该小部件随机绘制红点 我通过使用以下命令为 MouseHovering 事件安装事件过滤器 在 QMainWindow 的状态栏中显示鼠标坐标self ins
  • 将 Pandas 列转换为日期时间

    我在 pandas DataFrame 中有一个字段以字符串格式导入 它应该是一个日期时间变量 如何将其转换为日期时间列 然后根据日期进行过滤 Example raw data pd DataFrame Mycol 05SEP2014 00
  • 计算两个表中等效行的交集

    我有两个 FITS 文件 让我们考虑一下例如第一个文件有 100 行和 2 列 第二个文件有 1000 行和 2 列 FITS FILE 1 FITS FILE 2 A B C D 1 2 1 2 1 3 1 2 2 4 1 2 我需要采取
  • Python NET 调用具有返回值和输出参数的 C# 方法

    我有以下静态 C 方法 public static bool TryParse string s out double result 我想使用 Python NET 包从 Python 调用它 import clr from System
  • 使用请求和多处理时的奇怪问题

    请检查这个Python代码 usr bin env python import requests import multiprocessing from time import sleep time from requests import
  • 如何在 Ubuntu 上通过 pip 安装 python3 版本的软件包?

    我两者都有python2 7 and python3 2安装在Ubuntu 12 04 符号链接python链接到python2 7 当我输入 sudo pip install package name 它将默认安装python2的版本pa
  • Requests-html 导致 OSError: [Errno 8] 调用 html.render() 时执行格式错误

    我正在使用 requests html 并尝试渲染功能 但收效甚微 当我使用 python3 8 运行这个脚本时 usr bin python3 from requests html import HTML file scrape temp
  • Python-打印字符串一定次数[重复]

    这个问题在这里已经有答案了 可能的重复 Python 多次打印 https stackoverflow com questions 6293421 python printing multiple times 我想知道如何打印 String
  • 将下载的字体添加到 Tkinter

    我想下载一个开源字体并在我的 Python Tkinter 程序中使用它 如何告诉 Tkinter 从目录导入字体或将字体放在与程序相同的文件夹中 Note 我已经寻找答案一段时间了 甚至阅读了 Tkinter 的 API 参考 了解我能找

随机推荐

  • MVVM 中的后台线程进度通知?

    如何修改 MVVM 视图模型Progress在后台线程上完成的工作的属性 我正在创建一个 MVVM 应用程序 它在后台线程上执行任务 使用Task Factory StartNew and Parallel ForEach 我在用本文 ht
  • AT+CUSD 无法在华为 e3131a 调制解调器上工作

    我试图发送 at 命令以在 huawei e3131a 调制解调器上获得平衡 但无论我使用什么配置 GSM IRA UCS2 我总是收到 Ok 作为答案 我还尝试更改操作员代码 123 到许多格式 如十六进制 PDU 简单字符串 但无法获得
  • 使 in 子句将所有项目与任何替代项相匹配?

    我有一张桌子hotel hotelid hotelname etc 和另一张桌子facilities facilityid facilityname 这两个表通过 table 链接hotel to facilities map hoteli
  • 使用从 bash 中的文件读取的数组并行化 while 循环

    我在 Bash 中有一个 while 循环 处理如下 while IFS t read r a line do myprogram line 0 line 1 line 0 vs line 1 result done lt fileinpu
  • 我想禁用特定航空窗口上的阴影效果

    我想禁用特定航空窗口上的阴影效果 我所拥有的只是该窗口的 HWND 这可能吗 阴影由操作系统当前使用的主题定义 您不能仅针对一个窗口禁用它 您可以更改主题并禁用阴影 但这将是系统范围内的更改 而不是特定于某个窗口 就您而言 最好的方法之一是
  • 从 SSIS 执行 SQL 任务返回整数值

    我正在使用 SQL Server 2005 Business Intelligence Studio 并努力从一个非常简单的执行 SQL 任务返回一个整数值 为了一个非常简单的测试 我将 SQL 语句编写为 Select 35 As Tot
  • NSManagedObjectModel - 动态创建模型

    谁能给我指点一下在 Xcode 中动态构建核心数据模型的教程吗 我发现的所有教程都是基于静态设计 但苹果文档说可以以编程方式构建模型 遗憾的是 苹果文档集中没有相关示例 你必须初始化一个NSManagedObjectModel 然后为模型中
  • Bash:无限睡眠(无限阻塞)

    I use startx启动 X 它将评估我的 xinitrc In my xinitrc我使用启动窗口管理器 usr bin mywm 现在 如果我终止我的 WM 为了测试其他 WM X 也会终止 因为 xinitrc脚本到达 EOF 所
  • 如何让 ServiceStack 身份验证发挥作用? (使用 iPhone 客户端)

    我们聘请了一名承包商 他正在为我们编写 iPhone 应用程序 我开始使用 ServiceStack 为其编写后端服务 我在一般授权方面遇到了困难 使用什么样的授权以及如何实现它 我对 ServiceStack HTTP 和授权不太了解 还
  • JFormattedTextField 中严格的 24 小时时间

    我正在尝试创建一个仅接受 24 小时时间的 JFormattedTextField 我非常接近解决方案 但有一种情况以下代码示例不起作用 如果输入时间 222 并从字段中更改焦点 时间将更正为 2202 我希望它只接受完整的 4 位数 24
  • 为 SQL Server 中的特定记录生成脚本

    这可能是一个有限但有价值的场景 我有一个 SQL Server 2008 数据库 其中有一个包含数百万条记录的表 一些记录似乎存在间歇性问题 我正在尝试重现该问题 为了做到这一点 我终于获得了违规记录的 ID 我想在我的 PROD 数据库中
  • 如何从 C# 代码重新启用 Gmail 中的弹出功能?

    我有一个从 Gmail 下载邮件的程序 我选择了单选按钮 为所有邮件启用 POP 甚至是已下载的邮件 下载邮件后 我的 Gmail 将上述状态更改为 对自当前日期以来到达的所有邮件启用 POP 我没有物理更改单选按钮 但它似乎自动将其设置为
  • 如何在剑道网格中加载大量数据

    网页方法
  • calloc(4, 6) 与 calloc(6, 4) 相同吗?

    我是一名初学者 C 程序员 我认为情况会如此 但如果可能的话希望得到一些肯定 如果它们是相同的 为什么不只取一个参数呢 之间没有真正的区别calloc a b and calloc b a 尽管如此 它们都分配相同数量的空间并适当填充它 元
  • 嵌套名称说明符

    我有一个类似的代码 namespace mymap template
  • 可拖动元素的包含

    如何定义可拖动对象的包含区域以使其可拖动到其父元素之外 我有两个可放置的容器 其中有可拖动的 div 我想在容器之间拖动包含的 div 但是 div 落在父容器的边框下方 而不是穿过父容器的边框 如果我设置了非常高的 z 索引 我只能让 d
  • 如何在 HTML5 Canvas 中使用动态旋转值绘制水印?

    我正在使用 HTML5 我正在尝试使用文本在图像上绘制水印 我有以下代码 div style width 612px height 792px div
  • 可可中的自定义主应用程序循环

    我一直在关注 Handmade Hero 项目 其中 Casey Muratori 从头开始 创建了一个完整的游戏引擎 而不使用库 该引擎具有高度可移植性 因为它呈现自己的位图 然后平台特定的代码将其绘制到屏幕上 在 Windows 下 通
  • C++ 类中的内联规则是什么?

    从我很久以前读到的内容来看 如果您希望在编译阶段内联类成员函数 则该函数必须在类声明块内定义 但这有一个缺点 那就是细节泄露 恕我直言 其他程序员在打开 h 文件时应该只看到类接口 第一个陈述在现代 C 中仍然正确吗 有没有办法强制内联声明
  • 错误:“已加载运行时 CuDNN 库:5005 但源是用 5103 编译的”是什么意思?

    我尝试将 TensorFlow 与 GPU 结合使用 但出现以下错误 I tensorflow core common runtime gpu gpu device cc 838 Creating TensorFlow device gpu