编程调试方法、装置及相关产品.pdf
《编程调试方法、装置及相关产品.pdf》由会员分享,可在线阅读,更多相关《编程调试方法、装置及相关产品.pdf(18页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910267873.1 (22)申请日 2019.04.03 (71)申请人 北京中科寒武纪科技有限公司 地址 100000 北京市海淀区科学院南路6号 科研综合楼644室 (72)发明人 不公告发明人 (74)专利代理机构 广州三环专利商标代理有限 公司 44202 代理人 郝传鑫熊永强 (51)Int.Cl. G06F 11/36(2006.01) G06F 8/41(2018.01) (54)发明名称 一种编程调试方法、 装置及相关产品 (57)摘要 本发明实施例公开。
2、了一种编程调试方法, 通 过调用预设模拟库的等价程序对所述待调试代 码进行编译及调试, 得到目标代码。 其解决了芯 片编程难以调试的问题, 同时实现了高效率调试 的效果。 权利要求书2页 说明书11页 附图4页 CN 109992516 A 2019.07.09 CN 109992516 A 1.一种编程调试方法, 其特征在于, 包括: 获取芯片的待调试代码; 调用预设模拟库的等价程序对所述待调试代码进行编译及调试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程序; 对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 2.根据权利要求1所述的方法, 其。
3、特征在于, 所述调用预设模拟库的等价程序对所述待 调试代码进行编译及调试, 得到目标代码, 包括: 调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到中间可执行程序; 运行所述中间可执行程序, 获得所述中间可执行程序的运行结果; 若所述中间可执行程序的运行结果符合预设条件, 则将符合预设条件的所述中间可执 行程序对应的待调试代码作为所述目标代码。 3.根据权利要求2所述的方法, 其特征在于, 所述方法还包括: 若所述中间可执行程序的运行结果不符合所述预设条件, 则对所述待调试代码进行调 试, 之后返回执行所述调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到 中间可执行程序。
4、。 4.根据权利要求3所述的方法, 其特征在于, 所述中间可执行程序包括第一中间可执行 程序, 所述预设条件包括第一预设条件, 所述若所述中间可执行程序的运行结果不符合所 述预设条件, 则对所述待调试代码进行调试, 包括: 获取所述第一中间可执行程序的运行结果; 确认所述第一中间可执行程序的运行结果是否符合所述第一预设条件; 若所述第一中间可执行程序的运行结果不符合所述第一预设条件, 则根据所述第一中 间可执行程序的运行结果, 对所述待调试代码进行调试。 5.根据权利要求4所述的方法, 其特征在于, 所述中间可执行程序还包括第二中间可执 行程序, 所述若所述中间可执行程序的运行结果不符合所述预。
5、设条件, 则对所述待调试代 码进行调试, 还包括: 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 则获取所述第二中间 可执行程序的运行结果; 获取所述第一中间可执行程序和第二中间可执行程序的运行结果之间的误差值; 若所述误差值大于预设误差值, 则对所述待调试代码进行调试。 6.根据权利要求5所述的方法, 其特征在于, 所述若所述误差值大于预设误差值, 则对 所述待调试代码进行调试, 包括: 若所述误差值大于预设误差值, 通过预设的精度补偿算法对所述待调试代码进行调 试。 7.根据权利要求5或6所述的方法, 其特征在于, 所述方法还包括: 若所述第一中间可执行程序的运行结果符合所述第。
6、一预设条件, 且所述误差值小于或 等于所述预设误差值, 则确定所述中间可执行程序符合所述预设条件。 8.一种编程调试装置, 其特征在于, 包括: 获取模块, 用于获取芯片的待调试代码; 调试模块, 用于调用预设模拟库的等价程序对所述待调试代码进行编译及调试, 得到 权利要求书 1/2 页 2 CN 109992516 A 2 目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程序; 编译模块, 用于对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 9.一种计算机设备, 包括存储器和处理器, 所述存储器上存储有可在处理器上运行的 计算机程序, 其特征在于, 所述处。
7、理器执行所述计算机程序时, 实现权利要求1至7中任一项 所述方法的步骤。 10.一种可读存储介质, 其上存储有计算机程序, 其特征在于, 所述计算机程序被处理 器执行时实现权利要求1至7中任一项所述方法的步骤。 权利要求书 2/2 页 3 CN 109992516 A 3 一种编程调试方法、 装置及相关产品 技术领域 0001 本发明涉及计算机技术领域, 尤其涉及一种编程调试方法、 装置及相关产品。 背景技术 0002 传统技术中, 当在开发芯片如人工智能芯片之后, 需要将现有的某算法移植到该 芯片, 并在该芯片上运行该算法以及在该芯片上对算法进行调试, 但是在该芯片不支持打 印或者debug。
8、工具时, 则在算法移植过程中将面临难以调试的问题。 因此, 如何解决人工智 能芯片编程调试困难的问题将成为热点。 发明内容 0003 本申请实施例提供一种编程调试方法、 装置及相关产品, 能够快捷的实现调试。 0004 本申请实施例的第一方面提供了一种编程调试方法, 包括: 0005 获取芯片的待调试代码; 0006 调用预设模拟库的等价程序对所述待调试代码进行编译及调试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程序; 0007 对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 0008 在一个可选实施例中, 所述调用预设模拟库的等价程序对所述待。
9、调试代码进行编 译及调试, 得到目标代码, 包括: 0009 调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到中间可执行程 序; 0010 运行所述中间可执行程序, 获得所述中间可执行程序的运行结果; 0011 若所述中间可执行程序的运行结果符合预设条件, 则将符合预设条件的所述中间 可执行程序对应的待调试代码作为所述目标代码。 0012 在一个可选实施例中, 所述方法还包括: 0013 若所述中间可执行程序的运行结果不符合所述预设条件, 则对所述待调试代码进 行调试, 之后返回执行所述调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到中间可执行程序。 0014 在一个可。
10、选实施例中, 所述中间可执行程序包括第一中间可执行程序, 所述预设 条件包括第一预设条件, 所述若所述中间可执行程序的运行结果不符合所述预设条件, 则 对所述待调试代码进行调试, 包括: 0015 获取所述第一中间可执行程序的运行结果; 0016 确认所述第一中间可执行程序的运行结果是否符合所述第一预设条件; 0017 若所述第一中间可执行程序的运行结果不符合所述第一预设条件, 则根据所述第 一中间可执行程序的运行结果, 对所述待调试代码进行调试。 0018 在一个可选实施例中, 所述中间可执行程序还包括第二中间可执行程序, 所述若 所述中间可执行程序的运行结果不符合所述预设条件, 则对所述待。
11、调试代码进行调试, 还 说明书 1/11 页 4 CN 109992516 A 4 包括: 0019 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 则获取所述第二 中间可执行程序的运行结果; 0020 获取所述第一中间可执行程序和第二中间可执行程序的运行结果之间的误差值; 0021 若所述误差值大于预设误差值, 则对所述待调试代码进行调试。 0022 在一个可选实施例中, 所述若所述误差值大于预设误差值, 则对所述待调试代码 进行调试, 包括: 0023 若所述误差值大于预设误差值, 通过预设的精度补偿算法对所述待调试代码进行 调试。 0024 进一步, 所述方法还包括: 0025。
12、 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 且所述误差值小 于或等于所述预设误差值, 则确定所述中间可执行程序符合所述预设条件。 0026 本申请实施例的第二方面提供了一种编程调试装置, 包括: 0027 获取模块, 用于获取芯片的待调试代码; 0028 调试模块, 用于调用预设模拟库的等价程序对所述待调试代码进行编译及调试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程序; 0029 编译模块, 用于对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 0030 在一个可选实施例中, 所述调试模块用于执行: 0031 调用所述预设模拟库。
13、的等价程序对所述待调试代码进行编译, 得到中间可执行程 序; 0032 运行所述中间可执行程序, 获得所述中间可执行程序的运行结果; 0033 若所述中间可执行程序的运行结果符合预设条件, 则将符合预设条件的所述中间 可执行程序对应的待调试代码作为所述目标代码。 0034 在一个可选实施例中, 所述调试模块还用于执行: 0035 若所述中间可执行程序的运行结果不符合所述预设条件, 则对所述待调试代码进 行调试, 之后返回执行所述调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到中间可执行程序。 0036 在一个可选实施例中, 所述中间可执行程序包括第一中间可执行程序, 所述预设 条件。
14、包括第一预设条件, 所述调试模块还用于执行: 0037 获取所述第一中间可执行程序的运行结果; 0038 确认所述第一中间可执行程序的运行结果是否符合所述第一预设条件; 0039 若所述第一中间可执行程序的运行结果不符合所述第一预设条件, 则根据所述第 一中间可执行程序的运行结果, 对所述待调试代码进行调试。 0040 在一个可选实施例中, 所述中间可执行程序还包括第二中间可执行程序, 所述调 试模块还用于执行: 0041 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 则获取所述第二 中间可执行程序的运行结果; 0042 获取所述第一中间可执行程序和第二中间可执行程序的运行结果之间。
15、的误差值; 0043 若所述误差值大于预设误差值, 则对所述待调试代码进行调试。 说明书 2/11 页 5 CN 109992516 A 5 0044 在一个可选实施例中, 所述调试模块还用于执行: 0045 若所述误差值大于预设误差值, 通过预设的精度补偿算法对所述待调试代码进行 调试。 0046 在一个可选实施例中, 所述调试模块还用于执行: 0047 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 且所述误差值小 于或等于所述预设误差值, 则确定所述中间可执行程序符合所述预设条件。 0048 本申请实施例的第三方面提供了一种计算机设备, 包括存储器和处理器, 所述存 储器上存储。
16、有可在处理器上运行的计算机程序, 所述处理器执行所述计算机程序时, 实现 所述方法的步骤。 0049 本申请实施例的第四方面提供了一种可读存储介质, 其上存储有计算机程序, 所 述计算机程序被处理器执行时实现所述方法的步骤。 0050 实施本申请实施例, 至少具有如下有益效果: 0051 通过本申请实施例, 通过调用预设模拟库的等价程序对待调试代码进行编译及调 试, 得到目标代码, 通过对目标代码进行编译, 进而得到适用芯片的可执行文件。 采用该手 段, 通过在可调试环境下设立与芯片相对应的预设模拟库, 然后对待调试代码进行编译及 调试, 当在该可调试环境下调试成功后, 则将对应目标代码编译的。
17、可执行文件发送给所述 芯片。 其解决了芯片编程难以调试的问题, 同时获得了高效率调试的效果。 附图说明 0052 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。 0053 其中: 0054 图1为本发明实施例提供的一种编程调试方法的流程示意图; 0055 图2是本发明实施例提供的另一种编程调试方法的流程示意图; 0056 图3是本发明实施例提供的另一种编程调试方法的流程。
18、示意图; 0057 图4是本发明实施例提供的再一种编程调试方法的流程示意图; 0058 图5是本发明实施例提供的一种终端的结构示意图; 0059 图6是本发明实施例提供的一种编程调试装置的结构示意图。 具体实施方式 0060 下面将结合本申请实施例中的附图, 对本申请实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本申请一部分实施例, 而不是全部的实施例。 基于 本申请中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本申请保护的范围。 0061 本申请的说明书和权利要求书及上述附图中的术语 “第一” 、“第二” 等是用于区别。
19、 不同对象, 而不是用于描述特定顺序。 此外, 术语 “包括” 和 “具有” 以及它们任何变形, 意图 在于覆盖不排他的包含。 例如包含了一系列步骤或单元的过程、 方法、 系统、 产品或设备没 说明书 3/11 页 6 CN 109992516 A 6 有限定于已列出的步骤或单元, 而是可选地还包括没有列出的步骤或单元, 或可选地还包 括对于这些过程、 方法、 产品或设备固有的其他步骤或单元。 0062 在本申请中提及 “实施例” 意味着, 结合实施例描述的特定特征、 结构或特性可以 包含在本申请的至少一个实施例中。 在说明书中的各个位置出现该短语并不一定均是指相 同的实施例, 也不是与其它实。
20、施例互斥的独立的或备选的实施例。 本领域技术人员显式地 和隐式地理解的是, 本申请所描述的实施例可以与其它实施例相结合。 0063 传统技术中, 当需要对人工智能芯片上运行的程序进行调试时, 往往需要对该程 序进行编译获得可执行文件, 并通过人工智能芯片运行该可执行文件, 从而可以在人工智 能芯片运行该可执行文件的过程中, 实现对该程序的调试。 但由于人工智能芯片等非通用 硬件芯片可能不支持打印和debug工具, 从而使得在硬件上直接对程序进行调试的工作量 较大。 为此本方案提出使用通用处理器(如CPU)模拟人工智能芯片的调试过程。 此技术是基 于通用处理器对人工智能芯片的功能模拟, 在通用处。
21、理器上实现与人工智能芯片上的程序 具有相同功能的函数或程序, 从而可以利用通用处理器的调试手段调试该人工智能芯片上 运行的程序, 并在该程序调试成功后再将该程序发送到人工智能芯片上运行, 从而简化了 非通用芯片上程序的调试过程。 0064 请参阅图1, 图1为本申请实施例提供了一种编程调试方法的流程示意图。 如图1所 示, 其可包括步骤101-103, 具体如下: 0065 101、 通用处理器获取芯片的待调试代码。 0066 可选地, 该芯片可以为非通用的芯片, 如可以为人工智能处理器, 也可以为图形处 理单元GPU(Graphics Processing Unit, 简称: GPU), 或。
22、其他类似的专用处理器; 0067 可选地, 该通用处理器可以是中央处理单元CPU(Central Processing Unit, 简 称: CPU), 通用处理器可以用来获取该非通用芯片的待调试代码。 0068 102、 所述通用处理器调用预设模拟库的等价程序对所述待调试代码进行编译及 调试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价 程序。 0069 其中, 该预设模拟库可以仅包括该芯片的待调试代码对应的等价程序, 该预设模 拟库也可以包括与该芯片的所有程序对应的等价程序。 该等价程序可以是对非通用芯片上 运行的程序的功能进行模拟的, 能够在通用处理器。
23、上运行的程序, 例如, 该等价程序可以是 使用C+等程序语言实现在通用处理器上实现与非通用芯片上程序的功能一致的函数或程 序, 从而达到模拟芯片运行的效果。 0070 通用处理器通过在获取到所述待调试代码之后, 则根据所述预设模拟库的等价程 序对所述待调试代码进行编译, 并通过不断调试进而得到调试成功的目标代码。 0071 103、 通用处理器对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 0072 通用处理器将所述目标代码进行编译, 得到适用所述芯片的可执行文件, 以便所 述芯片能够运行所述可执行文件。 0073 通过本申请实施例, 通用处理器通过调用预设模拟库的等价程序对待调试代。
24、码进 行编译及调试, 得到目标代码, 通过对目标代码进行编译进而得到适用芯片的可执行文件。 采用该手段, 通过在可调试环境下设立与芯片相对应的预设模拟库, 然后对待调试代码进 行编译及调试, 当在该可调试环境下调试成功后, 则将对应目标代码编译的可执行文件发 说明书 4/11 页 7 CN 109992516 A 7 送给所述芯片。 本申请实施例中的方法, 无需在非通用芯片上实现对相应程序的调试过程, 而是将调试成功的程序编译后直接发送到非通用芯片进行运行, 其解决了芯片编程难以调 试的问题, 同时实现了高效率调试的效果。 0074 请参阅图2, 图2为本申请实施例提供了另一种编程调试方法的流。
25、程示意图。 如图2 所示, 其可包括步骤201-205, 具体如下: 0075 201、 通用处理器获取芯片的待调试代码; 0076 202、 通用处理器调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得 到中间可执行程序; 0077 203、 通用处理器运行所述中间可执行程序, 获得所述中间可执行程序的运行结 果; 0078 204、 若所述中间可执行程序的运行结果符合预设条件, 则通用处理器将所述待调 试代码作为目标代码; 0079 其中, 该预设条件可以是该中间可执行程序的运行结果成功, 或者该中间可执行 程序的运行结果达到特定的条件等。 0080 205、 通用处理器对所述目标。
26、代码进行编译得到适用所述芯片的可执行文件。 0081 进一步可选地, 若所述中间可执行程序的运行结果不符合预设条件, 则对所述待 调试代码进行调试, 之后返回步骤202, 重复执行步骤202-205, 直至获得目标代码。 0082 通过本申请实施例, 通用处理器通过调用预设模拟库的等价程序对待调试代码进 行编译得到中间可执行程序, 通过对中间可执行程序进行调试进而得到所述目标代码。 采 用该手段, 通过调用预设模拟库对待调试代码进行编译, 得到中间可执行程序, 当中间可执 行程序运行成功后, 则将待调试代码作为目标代码。 其解决了芯片编程难以调试的问题, 同 时实现了高效率调试的效果。 008。
27、3 请参阅图3, 图3为本申请实施例提供了另一种编程调试方法的流程示意图。 如图3 所示, 其可包括步骤301-307, 具体如下: 0084 301、 通用处理器获取芯片的待调试代码。 0085 302、 通用处理器调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得 到中间可执行程序; 0086 在通用处理器上建立有预设模拟库, 该预设模拟库可以仅包括所述芯片的待调试 代码对应的等价程序, 该预设模拟库也可以包括与所述芯片的所有程序对应的等价程序。 0087 303、 通用处理器运行所述中间可执行程序, 获得所述中间可执行程序的运行结 果。 0088 304、 确认所述中间可执行程序。
28、的运行结果是否符合预设条件; 0089 其中, 该预设条件可以是该中间可执行程序的运行结果成功, 或者该中间可执行 程序的运行结果达到特定的条件等。 0090 305、 若不符合, 即中间可执行程序的运行结果不符合预设条件, 则所述通用处理 器对所述待调试代码进行调试, 之后返回执行步骤302。 0091 若所述中间可执行程序的运行结果不符合预设条件, 则对所述待调试代码进行调 试。 可选地, 所述中间可执行程序可包括第一中间可执行程序, 所述预设条件包括第一预设 条件, 上述步骤305具体包括: 说明书 5/11 页 8 CN 109992516 A 8 0092 A11、 通用处理器获取所。
29、述第一中间可执行程序的运行结果; 0093 其中, 所述第一中间可执行程序为所述待调试代码编译得到的第一版本代码, 第 一中间可执行程序的数据类型与所述通用处理器的数据类型相同, 该第一版本代码可以是 数据类型为float的、 能够在通用处理器上执行的程序代码。 如当通用处理器为CPU时, 由于 CPU上程序的数据类型通常为float, 则当第一中间可执行程序的数据类型也为float, 则可 以确定该待调试代码是否存在算法逻辑错误。 由于第一中间可执行程序的数据类型与CPU 上程序的数据类型一致, 若待调试代码中不存在算法逻辑错误, 则第一中间可执行程序的 运行结果应当是正确的。 若第一中间可。
30、执行程序的运行结果不正确, 则可以确定该待调试 代码中存在算法逻辑错误。 0094 本申请实施例中, 在确保数据类型一致的情况下, 进行算法正确性的验证, 可避免 运行结果不符合预设条件是因为数据类型不同的问题所造成的, 进而可高效的发现运行结 果不符合预设条件的原因, 便于进行调试。 0095 A12、 通用处理器确认所述第一中间可执行程序的运行结果是否符合所述第一预 设条件; 0096 所述第一预设条件可以是该第一中间可执行程序的运行结果正确, 如待调试代码 可能是该芯片上特有的、 用于实现特定算法的程序, 此时可以通过不断地对该待调试代码 进行调试, 直至该第一中间可执行程序的运行结果正。
31、确。 该第一中间可执行程序的正确的 运行结果可以是预先存储于通用处理器中的。 0097 或者, 该第一中间可执行程序的运行结果与采用通用处理器自身的程序进行运行 得到的结果相同。 如该待调试代码对应的算法程序与通用处理器上原有的算法程序的功能 一致, 则可以直接将该通用处理器上的程序转换成适用于在非通用芯片上执行的待调试代 码。 此时, 由于该待调试代码是由通用处理器上具有相同功能的程序转换而来, 则通过比较 第一中间可执行程序的运行结果与通用处理器上具有相同功能的源代码的运行结果是否 一致, 以确认第一中间可执行程序的运行结果是否符合第一预设条件。 具体地, 当第一中间 可执行程序的运行结果。
32、与通用处理器上具有相同功能的源代码的运行结果一致时, 确认第 一中间可执行程序的运行结果符合第一预设条件。 0098 A13、 若所述第一中间可执行程序的运行结果不符合所述第一预设条件, 则根据所 述第一中间可执行程序的运行结果, 对所述待调试代码进行调试。 0099 306、 若符合, 则将符合预设条件的第一中间可执行程序对应的所述待调试代码作 为目标代码; 0100 307、 对所述目标代码进行编译得到适用所述芯片的可执行文件。 0101 通过本申请实施例, 当中间可执行程序的运行结果不符合预设条件时, 则通过获 取第一中间可执行程序的运行结果, 当第一中间可执行程序的运行结果不符合第一预。
33、设条 件时, 则根据第一中间可执行程序的运行结果, 对待调试代码进行调试。 采用该手段, 通过 根据待调试代码编译得到的第一中间可执行程序的运行结果进行待调试代码的调试, 使得 在达到数据类型一致的前提下, 明确待调试代码的算法的正确性。 其解决了芯片编程难以 调试的问题, 同时实现了高效率调试的效果。 0102 进一步, 由于一些芯片支持的数据类型与如通用处理器的数据类型不一致, 比如, 有些人工智能芯片仅支持half数据类型的运算, 由于其与CPU的数据类型float不同, 因此 说明书 6/11 页 9 CN 109992516 A 9 可能会有精度损失。 在将算法从CPU程序转换到人工。
34、智能处理器上执行的程序时, 往往不容 易定位是因为转换过程中存在算法逻辑出错, 还是因为精度损失导致的误差。 为此, 可在确 保算法正确的情况下对精度误差进行调试。 具体如下: 0103 请参阅图4, 图4为本申请实施例提供了另一种编程调试方法的流程示意图。 如图4 所示, 其可包括步骤401-411, 具体如下: 0104 401、 通用处理器获取芯片的待调试代码; 0105 402、 所述通用处理器调用所述预设模拟库的等价程序对所述待调试代码进行编 译, 得到中间可执行程序; 0106 403、 所述通用处理器运行所述中间可执行程序, 获得所述中间可执行程序的运行 结果; 0107 404。
35、、 若所述中间可执行程序的运行结果不符合预设条件, 获取第一中间可执行程 序的运行结果; 0108 405、 通用处理器确认所述第一中间可执行程序的运行结果符合所述第一预设条 件; 0109 406、 若第一中间可执行程序的运行结果符合第一预设条件, 则通用处理器可以获 取第二中间可执行程序的运行结果; 0110 其中, 所述中间可执行程序还包括第二中间可执行程序, 所述第二中间可执行程 序可以为所述待调试代码编译得到的第二版本代码, 如可以是half版本的代码, 其中, 第二 中间可执行程序的数据类型与所述芯片的适用代码数据类型相同, 且第二中间可执行程序 的数据类型不同于所述第一中间可执行。
36、程序的数据类型精度。 该步骤是在明确算法正确的 基础上, 对因为代码数据类型不一致而造成的代码错误进行确认, 便于实现快速对代码进 行调试。 0111 407、 通用处理器获取所述第一中间可执行程序和第二中间可执行程序的运行结 果之间的误差值; 0112 可选地, 通过获取所述第一中间可执行程序和第二中间可执行程序的运行结果, 并计算两者之间的MSE(均方误差)。 当然, 此处的误差值还可以采用其他计算方式获得, 并 不限于均方误差。 0113 可选地, 其中的误差可能主要来源于累加损失或者溢出(half最大值为65536), 如 溢出可能导致误差, 由于half类型数据累加(half类型数量。
37、级超过3, 则不能做加法, 如1000 +0.051000), 容易因为精度误差导致计算结果出错。 再如, 在累加运算中, 常见的为大数 吃小数的情况, 比如1000+0.051000。 half数据本身的表示精度随着数值的增大而降低, 如大于1024的half数据, 其最小精度为1, 完全失去了小数部分。 0114 408、 通用处理器确认所述误差值是否大于预设误差值; 0115 409、 若所述误差值大于预设误差值, 则通用处理器对所述待调试代码进行调试, 之后返回执行步骤402; 直到所述中间可执行程序的运行结果符合预设条件。 0116 可选地, 预设误差值MSE可为不大于5等; 当然,。
38、 该预设误差值还可以为其他值, 此处仅用于举例说明, 并不用于限定本申请的范围。 0117 进一步可选地, 当所述误差值大于预设误差值时, 通过预设的精度补偿算法对所 述待调试代码进行调试。 其中, 基于累加导致的精度损失, 可以采用如下精度补偿算法实 说明书 7/11 页 10 CN 109992516 A 10 现: 0118 1、 累加计算补偿: 通过将数字分组求和, 避免相加数之间差距过大, 可以有效避免 出现大数吃小数的情况; 0119 2、 采用Kahan方法计算累加: 0120 Kahan求和为: 保存较大数与较小数相加过程中, 较小数丢失的有效数字, 然后将 丢失的有效数字一次。
39、补偿到求和结果中。 0121 具体地, 当弥补累加导致的精度损失时, 可以采用如下算法对代码进行调试, 具体 如下: 0122 A、 获取所述待调试代码中涉及精度的代码段; 0123 例如, 所述涉及精度的代码可以为有可能涉及累加运算的代码段; 0124 B、 确认所述代码段是否为累加损失代码; 0125 若是, 所述通用处理器将所述代码段修改为至少两个数字进行分组并求和的代 码, 和/或, 所述通用处理器将所述代码段修改为采用Kahan方法进行累加的代码, 其中, 所 述修改后的至少两个数字之间的差距满足预设值。 0126 进一步地, 基于溢出导致的精度损失, 可以采用预设的补偿算法对待调试。
40、代码进 行调试。 0127 410、 若所述误差值不大于预设误差值, 则所述中间可执行程序的运行结果符合预 设条件, 则将所述中间可执行程序作为目标代码。 0128 411、 通用处理器对所述目标代码进行编译得到适用所述芯片的可执行文件。 0129 当所述第一中间可执行程序的运行结果符合所述第一预设条件, 且所述误差值小 于或等于所述预设误差值, 则确定所述中间可执行程序符合所述预设条件; 则将所述中间 可执行程序作为目标代码, 并对所述目标代码进行编译得到适用所述芯片的可执行文件。 0130 通过本申请实施例, 当中间可执行程序的运行结果不符合预设条件时, 则通过获 取第一中间可执行程序的运。
41、行结果, 在确认第一中间可执行程序的运行结果符合第一预设 条件后, 获取第一中间可执行程序和第二中间可执行程序的运行结果之间的误差值, 当误 差值大于预设误差值, 则对所述待调试代码进行数据类型的精度补偿调试, 直到误差值不 大于所述预设误差值。 采用该手段, 通过在确认第一中间可执行程序的运行结果符合第一 预设条件的情况下, 获取第一中间可执行程序和第二中间可执行程序的运行结果之间的误 差值, 进行待调试代码的精度补偿调试, 使得在达到代码算法正确的前提下, 进行数据类型 不一致而带来的误差的消减。 其解决了芯片难以调试的问题, 同时实现了高效率调试的效 果, 可快速定位到待调试代码出现的问。
42、题。 0131 与上述实施例一致的, 请参阅图5, 图5为本申请实施例提供的一种终端的结构示 意图, 如图所示, 包括处理器、 输入设备、 输出设备和存储器, 所述处理器、 输入设备、 输出设 备和存储器相互连接, 其中, 所述存储器用于存储计算机程序, 所述计算机程序包括程序指 令, 所述处理器被配置用于调用所述程序指令, 上述程序包括用于执行以下步骤的指令; 0132 获取芯片的待调试代码; 0133 调用预设模拟库的等价程序对所述待调试代码进行编译及调试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程序; 0134 对所述目标代码进行编译得到适用所述芯。
43、片的可执行文件。 说明书 8/11 页 11 CN 109992516 A 11 0135 通过本申请实施例, 通过调用预设模拟库的等价程序对待调试代码进行编译及调 试, 得到目标代码, 通过对目标代码进行编译进而得到适用芯片的可执行文件。 采用该手 段, 通过在可调试环境下设立与芯片相对应的预设模拟库, 然后对待调试代码进行编译及 调试, 当在该可调试环境下调试成功后, 则将对应目标代码编译的可执行文件发送给所述 芯片。 其解决了芯片难以调试的问题, 同时实现了高效率调试的效果。 0136 上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。 可以理解 的是, 终端为了实现上述功能。
44、, 其包含了执行各个功能相应的硬件结构和/或软件模块。 本 领域技术人员应该很容易意识到, 结合本文中所提供的实施例描述的各示例的单元及算法 步骤, 本申请能够以硬件或硬件和计算机软件的结合形式来实现。 某个功能究竟以硬件还 是计算机软件驱动硬件的方式来执行, 取决于技术方案的特定应用和设计约束条件。 专业 技术人员可以对每个特定的应用使用不同方法来实现所描述的功能, 但是这种实现不应认 为超出本申请的范围。 0137 本申请实施例可以根据上述方法示例对终端进行功能单元的划分, 例如, 可以对 应各个功能划分各个功能单元, 也可以将两个或两个以上的功能集成在一个处理单元中。 上述集成的单元既可。
45、以采用硬件的形式实现, 也可以采用软件功能单元的形式实现。 需要 说明的是, 本申请实施例中对单元的划分是示意性的, 仅仅为一种逻辑功能划分, 实际实现 时可以有另外的划分方式。 0138 与上述一致的, 请参阅图6, 图6为本申请实施例提供了一种编程调试装置的结构 示意图。 其包括获取模块601、 调试模块602、 编译模块603, 具体如下: 0139 获取模块601, 用于获取芯片的待调试代码; 0140 调试模块602, 用于调用预设模拟库的等价程序对所述待调试代码进行编译及调 试, 得到目标代码, 其中, 所述预设模拟库至少包括与所述芯片的待调试代码对应的等价程 序; 0141 编译。
46、模块603, 用于对所述目标代码进行编译, 得到适用所述芯片的可执行文件。 0142 进一步, 所述调试模块602还用于执行: 0143 调用所述预设模拟库的等价程序对所述待调试代码进行编译, 得到中间可执行程 序; 0144 运行所述中间可执行程序, 获得所述中间可执行程序的运行结果; 0145 若所述中间可执行程序的运行结果符合预设条件, 则将符合预设条件的所述中间 可执行程序对应的待调试代码作为所述目标代码。 0146 进一步, 所述调试模块602还用于执行: 0147 若所述中间可执行程序的运行结果不符合所述预设条件, 则对所述待调试代码进 行调试, 之后返回执行所述调用所述预设模拟库。
47、的等价程序对所述待调试代码进行编译, 得到中间可执行程序。 0148 进一步, 所述中间可执行程序包括第一中间可执行程序, 所述预设条件包括第一 预设条件, 所述调试模块602还用于执行: 0149 获取所述第一中间可执行程序的运行结果; 0150 确认所述第一中间可执行程序的运行结果是否符合所述第一预设条件; 0151 若所述第一中间可执行程序的运行结果不符合所述第一预设条件, 则根据所述第 说明书 9/11 页 12 CN 109992516 A 12 一中间可执行程序的运行结果, 对所述待调试代码进行调试。 0152 进一步, 所述中间可执行程序还包括第二中间可执行程序, 所述调试模块6。
48、02还用 于执行: 0153 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 则获取所述第二 中间可执行程序的运行结果; 0154 获取所述第一中间可执行程序和第二中间可执行程序的运行结果之间的误差值; 0155 若所述误差值大于预设误差值, 则对所述待调试代码进行调试。 0156 进一步, 所述调试模块602还用于执行: 0157 若所述误差值大于预设误差值, 通过预设的精度补偿算法对所述待调试代码进行 调试。 0158 进一步, 所述调试模块602还用于执行: 0159 若所述第一中间可执行程序的运行结果符合所述第一预设条件, 且所述误差值小 于或等于所述预设误差值, 则确定所述。
49、中间可执行程序符合所述预设条件。 0160 可以看出, 通过本申请实施例, 通过调用预设模拟库的等价程序对待调试代码进 行编译及调试, 得到目标代码, 通过对目标代码进行编译进而得到适用芯片的可执行文件。 采用该手段, 通过在可调试环境下设立与芯片相对应的预设模拟库, 然后对待调试代码进 行编译及调试, 当在该可调试环境下调试成功后, 则将对应目标代码编译的可执行文件发 送给所述芯片。 其解决了芯片难以调试的问题, 同时实现了高效率调试的效果。 0161 本申请实施例还提供一种计算机存储介质, 其中, 该计算机存储介质存储用于电 子数据交换的计算机程序, 该计算机程序使得计算机执行如上述方法实。
50、施例中记载的任何 一种编程调试方法的部分或全部步骤。 0162 本申请实施例还提供一种计算机程序产品, 所述计算机程序产品包括存储了计算 机程序的非瞬时性计算机可读存储介质, 该计算机程序使得计算机执行如上述方法实施例 中记载的任何一种编程调试方法的部分或全部步骤。 0163 需要说明的是, 对于前述的各方法实施例, 为了简单描述, 故将其都表述为一系列 的动作组合, 但是本领域技术人员应该知悉, 本申请并不受所描述的动作顺序的限制, 因为 依据本申请, 某些步骤可以采用其他顺序或者同时进行。 其次, 本领域技术人员也应该知 悉, 说明书中所描述的实施例均属于优选实施例, 所涉及的动作和模块并。
- 内容关键字: 编程 调试 方法 装置 相关 产品
相机模块.pdf
具有防堵机构的浆水处理用滤筛装置.pdf
打包设备.pdf
可回收动脉瘤辅助支架及输送系统.pdf
电梯井道相邻房间的复合隔声墙体构造.pdf
灯具的免接电线的导电铜片触点结构.pdf
管式反应器.pdf
陶瓷纤维管.pdf
留孔装置.pdf
冲压机用的送料机构.pdf
玻璃装饰条组装装置.pdf
电缆抗拉强度检测装置.pdf
电网建设的架线机.pdf
家电玻璃多向磨边机.pdf
用于土壤肥料的均匀泼洒机构.pdf
漏电电流检测仪及防护组件.pdf
洁净室多重复合杀菌过滤风口结构.pdf
纸垛自动整理装置.pdf
有机废气、有机废液及烟气的协同处理系统.pdf
铜锭抛光用夹具.pdf
指纹取景器.pdf
新型电动自楔式安全制动器.pdf
新型血糖试纸盒.pdf
中远距离传输零中频接收机电路.pdf
纳米铁强化磺胺废水厌氧消化的方法.pdf
鱼缸除垢机器人.pdf
可变形手持便携式三防平板电脑.pdf
步进电机散热方法、系统及介质.pdf
建筑施工降尘设备.pdf
防水防潮型家用可燃气体探测器.pdf
基于物联网的智能实验室安全管理策略确定方法及装置.pdf
基于双边带光频梳的快速布里渊光学时域分析仪.pdf