[发明专利]一种调试众核代码的方法及系统有效
申请号: | 202010087008.1 | 申请日: | 2020-02-11 |
公开(公告)号: | CN111324355B | 公开(公告)日: | 2022-05-31 |
发明(设计)人: | 赵雅倩;张新;李雪雷 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36 |
代理公司: | 济南诚智商标专利事务所有限公司 37105 | 代理人: | 李修杰 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 调试 代码 方法 系统 | ||
本申请公开了一种调试众核代码的方法及系统,该方法包括:获取原始代码和众核代码;对原始代码和众核代码进行分析,建立主核与从核之间的映射关系;根据映射关系,对众核代码进行正确性验证,获取验证结果;如果验证结果中有错误代码,对错误代码进行分析,获取错误代码的分析结果;根据分析结果对错误代码进行纠错和信息报告。该系统包括:代码获取模块、映射关系建立模块、代码验证模块、错误代码分析模块以及纠错和报告模块。通过本申请,能够加速众核代码从开发到验证,以及到最终应用的过程,大大提高众核代码的调试效率,进而提高应用程序移植的效率。
技术领域
本申请涉及异构计算技术领域,特别是涉及一种调试众核代码的方法及系统。
背景技术
在并行异构计算领域,通常采用异构加速器完成各种超级计算。加速器即众核,异构加速器的正常运行需要众核支持的库以及正确的众核代码。其中,众核支持的库都是随着众核的产生而产生的,采用的是与传统的C语言等不同的语言、指令等,且众核代码的实现涉及到数据的划分、计算任务的划分甚至代码的转换等,因此,众核代码的编写非常容易出现错误,为确保异构加速器的正常运行,如何对众核代码进行调试,是个重要的技术问题。
目前调试众核代码的方法,通常是在大型应用中进行,即:在大型应用的执行过程中,通过主从核之间协同进行,有时甚至需要完整运行一次应用,才能验证众核代码的正确性。发现众核代码的问题之后,需要在大型应用中逐一排查、调试。
然而,目前调试众核代码的方法中,由于需要在大型应用中进行调试,而且运行出现问题时,需要逐一排查,因此,目前的众核代码调试过程比较复杂和耗时,调试效率太低。
发明内容
本申请提供了一种调试众核代码的方法及系统,以解决现有技术中众核代码的调试过程太复杂、调试效率较低的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种调试众核代码的方法,所述方法包括:
获取原始代码和众核代码;
对原始代码和众核代码进行分析,建立主核与从核之间的映射关系;
根据所述映射关系,对所述众核代码进行正确性验证,获取验证结果;
如果验证结果中有错误代码,对所述错误代码进行分析,获取错误代码的分析结果;
根据所述分析结果对错误代码进行纠错和信息报告。
可选地,所述对原始代码和众核代码进行分析,建立主核与从核之间的映射关系,包括:
对所述原始代码进行字符串解析,获取原始代码中参与计算的计算参数、计算模式以及循环参数,所述计算参数包括:参与计算的数组的名称、维度以及各维度的起止坐标,所述循环参数包括:循环的层数、各层次循环的起止索引;
对所述众核代码进行字符串解析,获取参与计算的从核总数和从核ID;
对所述众核代码进行字符串解析,获取众核代码中参与计算的计算参数和计算模式;
对所述众核代码进行字符串解析,获取众核代码中的数据载入载出信息,所述数据载入载出信息包括:载入载出的数组名称、数据块在原始整体数组中对应的索引位置信息;
根据所述原始代码中参与计算的计算参数、众核代码中参与计算的计算参数、原始代码中计算模式与众核代码中计算模式之间的匹配关系、循环参数以及数据载入载出信息,建立主核与从核之间的映射关系。
可选地,对所述众核代码进行字符串解析,获取众核代码中参与计算的计算参数和计算模式之后,所述方法还包括:
判断所述从核代码中是否有循环;
如果有,获取从核代码中循环的层数、各层次循环的起止索引。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010087008.1/2.html,转载请声明来源钻瓜专利网。