本发明实施例涉及计算机应用,尤其涉及一种异构程序调试方法、系统、装置、电子设备及存储介质。
背景技术:
1、为了应对计算多元化的需求,越来越多的场景开始引入gpu(graphic processingunit,图形处理器)以及fpga(field programmable gate array,现场可编程门阵列)等硬件进行加速,异构计算(heterogeneous computing)应运而生。异构计算,主要指不同类型的指令集和体系架构的计算单元组成的系统的计算方式。所谓异构,是指cpu(centralprocessing unit,中央处理器)、dsp(digital signal processing/processor,数字信号处理)、gpu、asic(application specific integrated circuit,专用集成电路)、协处理器以及fpga等各种计算单元,使用不同的类型指令集、不同的体系架构的计算单元,组成一个混合系统来执行计算。
2、在异构计算程序的场景中,主机侧处理器通常为cpu,主机侧程序则可以为主机侧处理器运行的程序,设备侧单元(下文简称为设备)则通常为gpu、dsp或fpga等计算单元,设备侧程序则可以为设备侧计算单元运行的程序。为了保证异构计算程序的可靠性、灵活性和健壮性,往往需要对异构计算程序进行调试。调试是在将异构计算程序投入实际运行前,用相关方法进行测试,以修正程序中的语法错误和逻辑错误。
3、发明人在实现本发明的过程中,发现现有技术存在如下缺陷:不同于通用主机侧处理器的程序有强大调试工具可以帮助软件开发人员找到程序中的bug(错误),调试异构计算程序中设备侧程序的方法目前还缺乏有效手段。由于编写设备侧程序的复杂性,写出一个具有正确功能且高效的设备侧程序需要耗费大量时间和精力。因此,如何对异构计算程序中设备侧程序进行高效率调试,是目前异构计算场景中亟待解决的问题。
技术实现思路
1、本发明实施例提供一种异构程序调试方法、系统、装置、电子设备及存储介质,能够提高异构程序中设备侧程序的调试效率,进而提高设备侧程序的开发效率。
2、根据本发明的一方面,提供了一种异构程序调试方法,应用于调试器,所述调试器运行于主机侧处理器上,所述方法包括:
3、获取目标被调试异构程序的设备侧可执行文件;
4、对所述设备侧可执行文件进行解析,得到所述目标被调试异构程序中包括的目标设备侧程序的目标设备侧调试信息;
5、响应于用户输入的线程调试指令,确定所述目标设备侧程序对应的目标调试设备侧线程;
6、根据所述线程调试指令和所述目标设备侧调试信息,对所述目标调试设备侧线程进行调试。
7、根据本发明的另一方面,提供了一种异构程序调试系统,包括调试器、驱动程序和设备侧任务调度模块;所述调试器与所述驱动程序通信连接,所述驱动程序与所述设备侧任务调度模块通信连接;其中:
8、所述调试器用于:获取目标被调试异构程序的设备侧可执行文件;对所述设备侧可执行文件进行解析,得到所述目标被调试异构程序中包括的目标设备侧程序的目标设备侧调试信息;响应于用户输入的线程调试指令,确定所述目标设备侧程序对应的目标调试设备侧线程;根据所述线程调试指令和所述目标设备侧调试信息,对所述目标调试设备侧线程进行调试;
9、所述驱动程序用于:将所述设备侧可执行文件列表的地址保存至目标结构体数据中,并根据所述调试器的请求将所述目标结构体数据反馈至所述调试器;
10、所述设备侧任务调度模块用于:在所述调试器对所述目标调试设备侧线程进行调试之前,对所述驱动程序发出的命令进行响应,以暂停设备侧任务调度或向所述驱动程序反馈设备侧线程列表。
11、根据本发明的另一方面,提供了一种异构程序调试装置,配置于调试器,所述调试器运行于主机侧处理器上,所述装置包括:
12、设备侧可执行文件获取模块,用于获取目标被调试异构程序的设备侧可执行文件;
13、目标设备侧调试信息获取模块,用于对所述设备侧可执行文件进行解析,得到所述目标被调试异构程序中包括的目标设备侧程序的目标设备侧调试信息;
14、目标调试设备侧线程确定模块,用于响应于用户输入的线程调试指令,确定所述目标设备侧程序对应的目标调试设备侧线程;
15、目标调试设备侧线程调试模块,用于根据所述线程调试指令和所述目标设备侧调试信息,对所述目标调试设备侧线程进行调试。
16、根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
17、至少一个处理器;以及
18、与所述至少一个处理器通信连接的存储器;其中,
19、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的异构程序调试方法。
20、根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的异构程序调试方法。
21、本发明实施例通过运行于主机侧处理器上的调试器获取目标被调试异构程序的设备侧可执行文件,并对设备侧可执行文件进行解析,得到目标被调试异构程序中包括的目标设备侧程序的目标设备侧调试信息。在得到目标设备侧调试信息之后,即可响应于用户输入的线程调试指令,确定目标设备侧程序对应的目标调试设备侧线程,从而根据线程调试指令和目标设备侧调试信息,对目标调试设备侧线程进行调试,解决现有难以对设备侧程序高效调试的问题,能够提高异构程序中设备侧程序的调试效率,进而提高设备侧程序的开发效率。
22、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
1.一种异构程序调试方法,其特征在于,应用于调试器,所述调试器运行于主机侧处理器上,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述目标被调试异构程序还用于:
3.根据权利要求2所述的方法,其特征在于,所述驱动程序还用于:
4.根据权利要求3所述的方法,其特征在于,所述获取目标被调试异构程序的设备侧可执行文件,包括:
5.根据权利要求4所述的方法,其特征在于,所述驱动程序还用于:
6.根据权利要求1所述的方法,其特征在于,所述确定所述目标设备侧程序对应的目标调试设备侧线程,包括:
7.根据权利要求6所述的方法,其特征在于:
8.一种异构程序调试系统,其特征在于,包括调试器、驱动程序和设备侧任务调度模块;所述调试器与所述驱动程序通信连接,所述驱动程序与所述设备侧任务调度模块通信连接;其中:
9.一种异构程序调试装置,其特征在于,配置于调试器,所述调试器运行于主机侧处理器上,所述装置包括:
10.一种电子设备,其特征在于,所述电子设备包括:
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一所述的异构程序调试方法。
