CN117555550A - 应用于异构系统的编译方法、装置、电子设备及存储介质 - Google Patents

应用于异构系统的编译方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117555550A
CN117555550A CN202311532391.7A CN202311532391A CN117555550A CN 117555550 A CN117555550 A CN 117555550A CN 202311532391 A CN202311532391 A CN 202311532391A CN 117555550 A CN117555550 A CN 117555550A
Authority
CN
China
Prior art keywords
compiling
computing
computing device
file
compiled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311532391.7A
Other languages
English (en)
Inventor
刘叶雄
郭为
余雪松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Tiantian Smart Core Semiconductor Co ltd
Original Assignee
Shanghai Tiantian Smart Core Semiconductor Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Tiantian Smart Core Semiconductor Co ltd filed Critical Shanghai Tiantian Smart Core Semiconductor Co ltd
Priority to CN202311532391.7A priority Critical patent/CN117555550A/zh
Publication of CN117555550A publication Critical patent/CN117555550A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请提供一种应用于异构系统的编译方法、装置、电子设备及存储介质,涉及计算机的技术领域。应用于异构系统的编译方法,包括:基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;基于初始编译文件,确定执行初始编译文件的第一计算设备,以及获取执行初始编译文件需要占用第一计算设备的算力资源量;在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,对预设编译参数进行修改,并基于修改后的编译参数对待编译计算任务进行编译处理,得到目标编译文件,其中,第一计算设备执行目标编译文件所需的算力资源量低于第一计算设备执行初始编译文件所需的算力资源量。

Description

应用于异构系统的编译方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机的技术领域,具体而言,涉及一种应用于异构系统的编译方法、装置、电子设备及存储介质。
背景技术
在超异构软硬件协同计算统一框架下,同时支持多种计算设备,例如CPU(CentralProcessing Unit,中央处理器)、GPU(graphics processing unit,图形处理器)、DSP(Digital Signal Processor,网络数字信号处理器)、FPGA(Field Programmable GateArray,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,专用集成电路)等计算设备。在当前的框架下,计算任务的执行流程为:首先对计算任务进行编译生成计算负载,之后在运行时调用计算设备执行计算负载。但目前在进行编译的过程中,只是根据指定的参数调用相应设备的编译器编译出对应计算设备可执行的计算负载,这样可能造成计算任务的超分,使得出现计算任务堆积的情况。
发明内容
本申请提供一种应用于异构系统的编译方法、装置、电子设备及存储介质,以解决现有的编译方法可能造成计算任务的超分,使得出现计算任务堆积的情况的问题。
第一方面,本申请提供一种应用于异构系统的编译方法,包括:基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量;在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
本申请实施例中,在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,即表明第一计算设备执行该初始编译文件可能出现计算任务堆积的情况,因此,对预设编译参数进行修改,并基于修改后的编译参数对待编译计算任务再次进行编译处理,使得第一计算设备执行再次编译得到的目标编译文件所需的算力资源量低于第一计算设备执行初始编译文件所需的算力资源量。由于降低了对第一计算设备算力资源的需求,从而可以减少因第一计算设备算力资源量不足导致的计算任务堆积的情况。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,所述算力资源量包括第一寄存器数量和/或第一线程数量;其中,所述第一寄存器数量表征所述第一计算设备执行所述初始编译文件需要使用的寄存器数量;所述第一线程数量表征所述第一计算设备执行所述初始编译文件需要使用的线程数量。
本申请实施例中,通过第一寄存器数量、第一线程数量两个维度都可以表征初始编译文件需要使用的算力资源量,也可以结合两个维度的数据来表征初始编译文件需要使用的算力资源量,使得用户可以根据实际需求进行选择,提高了本方案的适用性。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,所述算力资源量包括所述第一寄存器数量和所述第一线程数量,所述预设条件包括所述第一寄存器数量小于第一预设阈值,所述第一线程数量小于第二预设阈值;其中,所述第一预设阈值和所述第二预设阈值根据所述第一计算设备的可用算力资源总量确定。
本申请实施例中,在第一寄存器数量小于第一预设阈值,第一线程数量小于第二预设阈值的情况下,才确认第一计算设备能够满足执行初始编译文件所需的算力资源量,从而防止出现第一计算设备寄存器数量足够但线程数量不足或线程数量足够但寄存器数量不足导致的计算任务堆积的情况。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,所述方法还包括:在所述算力资源量满足预设条件的情况下,将所述初始编译文件作为最终输出的所述目标编译文件。
本申请实施例中,在算力资源量满足预设条件的情况下,也即第一计算设备的算力资源量能够满足执行初始编译文件所需的算力资源量,因此,可以直接将始编译文件作为最终输出的目标编译文件。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,对所述预设编译参数进行修改,包括:将所述预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,N为大于等于2的整数;相应的,基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,包括:将所述待编译计算任务拆分为N个子待编译计算任务;其中,N所述子待编译计算任务与N个所述计算设备一一对应;针对每个所述子待编译计算任务,将该子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,其中,所述目标编译文件包括所有的所述子目标编译文件。
本申请实施例中,通过将预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,从而可以将该待编译计算任务分发给N个计算设备分别执行,实现降低对第一计算设备的算力资源量的需求,降低出现任务堆积的情况。并且,在将待编译计算任务拆分为N个子待编译计算任务后,将每个子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,从而不会出现计算设备无法执行子目标编译文件的情况。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,在将所述待编译计算任务拆分为N个子待编译计算任务之前,所述方法还包括:从所述异构系统下的所有的计算设备中,确定出能执行所述待编译计算任务的N个计算设备。
本申请实施例中,通过确定出N个能执行待编译计算任务的计算设备,从而防止出现计算设备无法执行编译后的子目标编译文件的情况。
结合上述第一方面所述的技术方案,在一些可能的实施方式中,对所述预设编译参数进行修改,包括:将所述预设编译参数中表征计算维度的参数进行修改,以使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低。
本申请实施例中,通过将预设编译参数中表征计算维度的参数进行修改,使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低,从而使得第一计算设备在执行该目标编译文件时,计算的每个计算矩阵的维度相较于初始编译文件更小,也即需要的计算量更少,从而可以降低对第一计算设备算力资源量的要求。
第二方面,本申请提供一种应用于异构系统的编译装置,包括:编译模块、处理模块,编译模块用于基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;处理模块用于基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量;所述编译模块还用于在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
第三方面,本申请提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面和/或结合上述第一方面任一可能的实施方式所述的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机运行时,执行上述第一方面和/或结合上述第一方面任一可能的实施方式所述的方法。
本方案的有益效果为:在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,即表明第一计算设备执行该初始编译文件可能出现计算任务堆积的情况,因此,对预设编译参数进行修改,并基于修改后的编译参数对待编译计算任务再次进行编译处理,使得第一计算设备执行再次编译得到的目标编译文件所需的算力资源量低于第一计算设备执行初始编译文件所需的算力资源量。由于降低了对第一计算设备算力资源的需求,从而可以减少因第一计算设备算力资源量不足导致的计算任务堆积的情况。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例示出的第一种应用于异构系统的编译方法的流程示意图;
图2为本申请实施例示出的第二种应用于异构系统的编译方法的流程示意图;
图3为本申请实施例示出的一种应用于异构系统的编译装置的结构框图;
图4为本申请实施例示出的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
下面将结合附图对本申请的技术方案进行详细地描述。
现有技术中,在超异构软硬件协同计算统一框架下,只是根据指定的参数调用相应设备的编译器编译出对应计算设备可执行的计算负载,但现有的编译方法可能造成计算任务的超分,使得出现计算任务堆积的情况。鉴于此,本申请提供一种应用于异构系统的编译方法、装置,以降低因编码方法导致出现计算任务超分的情况,从而降低出现任务堆积的情况。
请参阅图1,图1为本申请实施例示出的一种应用于异构系统的编译方法的流程示意图,下面将结合图1对其包含的步骤进行说明。
S100:基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件。
对待编译计算任务进行编译处理的具体实现方式已为本领域技术人员所熟知,为简要描述,此处不再赘述。
由于不同计算设备能识别的可执行文件的格式可能不同,因此,预设编译参数中可以包括有表征计算设备的参数,该参数用于指示编译后文件的格式,以防止出现编译后得到的初始编译文件无法被对应的计算设备执行。
一种实施方式下,可以预先配置有多个不同的编译器,其中,不同的编译器对应不同的计算设备。在需要对待编译计算任务进行编译的情况下,根据预设编译参数选择对应的目标编译器,并基于选择的目标编译器对待编译计算任务进行编译,得到初始编译文件。
其中,编译器可以是现有的任意类型的编译器,此处不对编译器的具体类型进行限制。
为了便于理解,以该异构系统包括GPU、DSP、FPGA、ASIC这四种计算设备为例进行说明。则可以预先配置有编译器1、编译器2、编译器3、编译器4这四种编译器,且编译器1与GPU对应,编译器2与DSP对应,编译器3与FPGA对应,编译器4与ASIC对应。则在需要对待编译计算任务进行编译处理时,若预设编译参数包括表征GPU的参数的情况下,利用GPU对应的编译器1对该待编译计算任务进行编译。
同理,若预设编译参数包括表征DSP的参数的情况下,利用DSP对应的编译器2对该待编译计算任务进行编译。若预设编译参数包括表征FPGA的参数的情况下,利用FPGA对应的编译器3对该待编译计算任务进行编译。若预设编译参数包括表征ASIC的参数的情况下,利用ASIC对应的编译器4对该待编译计算任务进行编译。此处举例仅为便于理解,不应作为对本申请的限制。
S200:基于初始编译文件,确定执行初始编译文件的第一计算设备,以及获取执行初始编译文件需要占用第一计算设备的算力资源量。
在得到初始编译文件后,即可根据该初始编译文件确定出用于执行该初始编译文件的第一计算设备。同时根据该初始编译文件获取执行初始编译文件需要占用第一计算设备的算力资源量。从而便于确定是否会出现任务堆积的情况。
可选的,若初始编译文件为ELF(Executable and Linkable Format,可执行和可链接格式)文件,则可以先从该ELF文件中确定出执行该初始编译文件的第一计算设备。然后可以从该初始编译文件的fatbin结构中找到执行该初始编译文件需要占用第一计算设备的算力资源量。
算力资源量是表征第一计算设备执行该初始编译文件需要使用的算力资源的量。
一种实施方式下,算力资源类可以有以下三种实施方式。
第一种实施方式,算力资源量可以包括第一寄存器数量。其中,第一寄存器数量表征第一计算设备执行初始编译文件需要使用的寄存器数量。
例如,以GPU为例,可以从ELF文件(初始编译文件)的fatbin结构中找到执行该ELF文件需要使用的寄存器数量,该寄存器数量即为第一寄存器数量。此处举例仅为便于理解,不应作为对本申请的限制。
第二种实施方式下,算力资源量可以包括第一线程数量。其中,第一线程数量表征第一计算设备执行初始编译文件需要使用的线程数量。
例如,以GPU为例,可以从ELF文件(初始编译文件)的fatbin结构中找到执行该ELF文件需要使用的线程数量,该线程数量即为第一线程数量。此处举例仅为便于理解,不应作为对本申请的限制。
第三种实施方式下,算力资源量可以包括第一寄存器数量和第一线程数量。其中,第一寄存器数量表征第一计算设备执行初始编译文件需要使用的寄存器数量;第一线程数量表征第一计算设备执行初始编译文件需要使用的线程数量。
例如,以GPU为例,可以从ELF文件(初始编译文件)的fatbin结构中找到执行该ELF文件需要使用的线程数量以及执行该ELF文件需要使用的寄存器数量。该寄存器数量即为第一寄存器数量,该线程数量即为第一线程数量。此处举例仅为便于理解,不应作为对本申请的限制。
除上述举例的三种实施方式外,算力资源量也可以根据计算设备的不同,而利用不同的方式表示,例如,若计算设备为CPU,则可以用CPU内核数量来表示算力资源量。此处不对算力资源量的具体表示方式进行限制。
S300:在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,对预设编译参数进行修改,并基于修改后的编译参数对待编译计算任务进行编译处理,得到目标编译文件。
其中,第一计算设备执行目标编译文件所需的算力资源量低于第一计算设备执行初始编译文件所需的算力资源量。
在得到第一计算设备执行初始编译文件所需的算力资源量后,即可确定第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量是否满足预设条件。在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量满足预设条件的情况下,即表明该第一计算设备能够满足执行该初始编译任务需要使用的算力资源量。在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,即表明第一计算设备执行该初始编译文件可能出现计算任务堆积的情况。
因此,在第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,对预设编译参数进行修改,并基于修改后的编译参数对待编译计算任务再次进行编译处理,使得第一计算设备执行再次编译得到的目标编译文件所需的算力资源量低于第一计算设备执行初始编译文件所需的算力资源量。由于降低了对第一计算设备算力资源的需求,从而可以减少因第一计算设备算力资源量不足导致的计算任务堆积的情况。
一种实施方式下,若在S200中得到的执行初始编译文件需要占用第一计算设备的算力资源量为第一寄存器数量的情况下,此时,第一计算设备的算力资源总量表示第一计算设备包括的寄存器总量。则预设条件可以是第一寄存器数量小于等于第一计算设备包括的寄存器总量。
或者,预设条件也可以是第一寄存器数量小于等于第一计算设备包括的寄存器总量与第一预设比例系数的乘积。其中,第一预设比例系数为小于1的正数。第一预设比例系数的具体取值可以根据实际需求进行选择,例如可以是0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9等,此处不对第一预设比例系数的具体大小进行限制。
一种实施方式下,若在S200中得到的执行初始编译文件需要占用第一计算设备的算力资源量为第一线程数量的情况下,此时,第一计算设备的算力资源总量表示第一计算设备包括的线程总量。则预设条件可以是第一线程数量小于等于第一计算设备包括的线程总量。
或者,预设条件也可以是第一线程数量小于等于第一计算设备包括的线程总量与第二预设比例系数的乘积。其中,第二预设比例系数为小于1的正数。第二预设比例系数的具体取值可以根据实际需求进行选择,例如可以是0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9等,此处不对第二预设比例系数的具体大小进行限制。
一种实施方式下,若在S200中得到的执行初始编译文件需要占用第一计算设备的算力资源量包括第一线程数量和第一寄存器数量的情况下,此时,第一计算设备的算力资源总量可以包括第一计算设备包括的线程总量和寄存器总量。
此种情况下,预设条件可以包括第一寄存器数量小于第一预设阈值,第一线程数量小于第二预设阈值。其中,第一预设阈值和第二预设阈值可以根据第一计算设备的可用算力资源总量确定。
只有在第一寄存器数量小于第一预设阈值,且第一线程数量小于第二预设阈值的情况下,才认为满足预设条件。若第一寄存器数量大于第一预设阈值,第一线程数量小于第二预设阈值;或者,第一寄存器数量小于第一预设阈值,第一线程数量大于第二预设阈值;或者第一寄存器数量大于第一预设阈值,第一线程数量大于第二预设阈值,这三种情况都认为不满足预设条件。
可选的,在判断是否满足预设条件时,判断第一寄存器数量是否小于第一预设阈值,以及判断第一线程数量是否小于第二预设阈值可以是并行执行的。
或者,也可以是先判断第一寄存器数量是否小于第一预设阈值,然后判断第一线程数量是否小于第二预设阈值。此种方式下,若第一寄存器数量大于第一预设阈值,可以无需判断第一线程数量是否小于第二预设阈值,直接确定不满足预设条件。
同理,也可以是先判断第一线程数量是否小于第二预设阈值,再判断第一寄存器数量是否小于第一预设阈值。此种方式下,若第一线程数量大于第二预设阈值,可以无需判断第一寄存器数量是否小于第一预设阈值,直接确定不满足预设条件。
可选的,第一预设阈值可以等于第一计算设备包括的寄存器总量,此时,第一寄存器数量小于第一预设阈值为:第一寄存器数量小于第一计算设备包括的寄存器总量。
或者,第一预设阈值也可以等于第一计算设备与第三预设比例系数的乘积,此时,第一寄存器数量小于第一预设阈值为:第一寄存器数量小于第一计算设备包括的寄存器总量与第三预设比例系数的乘积。
其中,第三预设比例系数为小于1的正数。第三预设比例系数的具体取值可以根据实际需求进行选择,例如可以是0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9等,此处不对第三预设比例系数的具体大小进行限制。
可选的,第二预设阈值可以等于第一计算设备包括的线程总量,此时,第一线程数量小于第二预设阈值为:第一线程数量小于第一计算设备包括的线程总量。
或者,第二预设阈值也可以等于第一计算设备与第四预设比例系数的乘积,此时,第一线程数量小于第二预设阈值为:第一线程数量小于第一计算设备包括的线程总量与第四预设比例系数的乘积。
其中,第四预设比例系数为小于1的正数。第四预设比例系数的具体取值可以根据实际需求进行选择,例如可以是0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9等,此处不对第四预设比例系数的具体大小进行限制。
可选的,在S200中得到的执行初始编译文件需要占用第一计算设备的算力资源量包括第一线程数量和第一寄存器数量的情况下,预设条件也可以为第一寄存器数量与第一计算设备包括的寄存器总量的比值小于第一预设比值,第一线程数量与第一计算设备包括的线程总量的比值小于第二预设比值。其中,第一预设比值和第二预设比值均为小于等于1的正数。
其中,在判断是否满足预设条件时,判断第一寄存器数量与第一计算设备包括的寄存器总量的比值是否小于第一预设比值,以及判断第一线程数量与第一计算设备包括的线程总量的比值是否小于第二预设比值可以是并行执行的。
或者,也可以是先判断第一寄存器数量与第一计算设备包括的寄存器总量的比值是否小于第一预设比值,然后判断第一线程数量与第一计算设备包括的线程总量的比值是否小于第二预设比值。此种方式下,若第一寄存器数量与第一计算设备包括的寄存器总量的比值大于第一预设比值,则无需再判断第一线程数量与第一计算设备包括的线程总量的比值是否小于第二预设比值,可以直接确定不满足预设条件。
同理,也可以是先判断第一线程数量与第一计算设备包括的线程总量的比值是否小于第二预设比值,然后判断第一寄存器数量与第一计算设备包括的寄存器总量的比值是否小于第一预设比值。若第一线程数量与第一计算设备包括的线程总量的比值大于第二预设比值,则无需再判断第一寄存器数量与第一计算设备包括的寄存器总量的比值是否小于第一预设比值,可以直接确定不满足预设条件。
第一寄存器数量与第一计算设备包括的寄存器总量的比值为:第一寄存器数量÷第一计算设备包括的寄存器总量。第一线程数量与第一计算设备包括的线程总量的比值为:第一线程数量÷第一计算设备包括的线程总量。
其中,只有在第一寄存器数量与第一计算设备包括的寄存器总量的比值小于第一预设比值,且第一线程数量与第一计算设备包括的线程总量的比值小于第二预设比值的情况下,才确认满足预设条件。若第一寄存器数量与第一计算设备包括的寄存器总量的比值小于第一预设比值,第一线程数量与第一计算设备包括的线程总量的比值大于第二预设比值;或者,第一寄存器数量与第一计算设备包括的寄存器总量的比值大于第一预设比值,第一线程数量与第一计算设备包括的线程总量的比值小于第二预设比值;或者,第一寄存器数量与第一计算设备包括的寄存器总量的比值大于第一预设比值,第一线程数量与第一计算设备包括的线程总量的比值大于第二预设比值,这三种情况,均认为不满足预设条件。
在确认算力资源量满足预设条件的情况下,可以直接将初始编译文件作为最终输出的目标编译文件。也即可以直接将该初始编译文件发送给对应的第一计算设备,以使第一计算设备执行该初始编译文件。
在确认算力资源量不满足预设条件的情况下,对预设编译参数进行修改可以有以下三种实施方式。
第一种实施方式下,对预设编译参数进行修改的具体方式可以是:将预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,N为大于等于2的整数。
相应的,基于修改后的编译参数对待编译计算任务进行编译处理,得到目标编译文件的具体方式为:首先将待编译计算任务拆分为N个子待编译计算任务;其中,N子待编译计算任务与N个计算设备一一对应;然后针对每个子待编译计算任务,将该子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,其中,目标编译文件包括所有的子目标编译文件。
可选的,将预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,可以是预先配置好的,在出现第一计算设备执行初始编译文件所需的算力资源量与第一计算设备的可用算力资源总量不满足预设条件的情况下,直接根据预先配置的与第一计算设备对应的N个计算设备对预设编译参数进行修改。
其中,与第一计算设备对应的N个计算设备均可以执行第一计算设备能执行的计算任务,从而防止出现将计算任务分配给无法执行的计算设备。
每个计算设备均可以预设有对应的多个计算设备,且与该计算设备对应的多个计算设备均能执行该计算设备能执行的计算任务,不同计算设备对应的计算设备的数量可以不同。
可选的,在将待编译计算任务拆分为N个子待编译计算任务之前,还可以先从异构系统下的所有的计算设备中,确定出能执行待编译计算任务的N个计算设备。通过确定出N个能执行待编译计算任务的计算设备,从而防止出现计算设备无法执行编译后的子目标编译文件的情况。
可选的,将待编译计算任务拆分为N个子待编译计算任务的具体实现方式可以是:将该待编译计算任务拆分为N个彼此独立的子计算任务。
由于N个子计算任务彼此独立,从而可以防止出现因子计算任务之间需要互相交互数据才能执行后续计算,导致计算设备无法完成后续计算的情况的出现。
为了便于理解,以该异构系统包括GPU、DSP、FPGA、ASIC这四种计算设备,第一计算设备为GPU为例进行说明。首先从该异构系统中确定出能执行该待编译计算任务的计算设备为GPU、DSP、FPGA。则将预设编译参数中表征GPU的参数修改为表征GPU、DSP、FPGA这三种计算设备的参数。然后将待编译计算任务拆分为第一子待编译计算任务、第二子待编译计算任务、第三子待编译计算任务这3个子待编译计算任务,且第一子待编译计算任务对应GPU,第二子待编译计算任务对应DSP,第三子待编译计算任务对应FPGA。
之后将第一子待编译计算任务编译为GPU对应格式的第一子目标编译文件;将第二子待编译计算任务编译为DSP对应格式的第二子目标编译文件;将第三子待编译计算任务编译为FPGA对应格式的第三子目标编译文件。其中,目标编译文件包括第一子目标编译文件、第二子目标编译文件、第三子目标编译文件。此处举例仅为便于理解,不应作为对本申请的限制。
第二种实施方式下,对预设编译参数进行修改的具体方式可以是:将预设编译参数中表征计算维度的参数进行修改,以使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低。
通过将预设编译参数中表征计算维度的参数进行修改,使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低,从而使得第一计算设备在执行该目标编译文件时,计算的每个计算矩阵的维度相较于初始编译文件更小,也即需要的计算量更少,从而可以降低对第一计算设备算力资源量的要求。
可选的,可以是调整预设编译参数的block size(块大小),从而实现降低目标编译文件中单个计算矩阵的维度,进而实现降低对第一计算设备算力资源量的要求。
第三种实施方式下,对预设编译参数进行修改的具体方式可以是:首先将预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备。并且,将预设编译参数中表征计算维度的参数进行修改,以使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低。
其中,第三种实施方式中对预设编译参数中的两类参数的具体修改方式及原理在前文已叙述清楚,为简要描述,此处不再赘述。
为了便于理解上述的应用于异构系统的编译方法,请参阅图2,图2为本申请实施例示出的应用于异构系统的编译方法的一种实施方式。
如图2所示,首先基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件。然后基于初始编译文件,确定执行初始编译文件的第一计算设备,以及获取执行初始编译文件需要占用第一计算设备的第一寄存器数量和第一线程数量。
判断第一寄存器数量是否小于第一计算设备的寄存器总量,以及判断第一线程数量是否小于第一计算设备支持的线程总量。
若第一寄存器数量小于等于第一计算设备的寄存器总量,且第一线程数量小于等于第一计算设备支持的线程总量,则将初始编译文件作为最终输出的目标编译文件。
若第一寄存器数量大于第一计算设备的寄存器总量,和/或,第一线程数量大于第一计算设备支持的线程总量,则将预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备。之后将待编译计算任务拆分为N个子待编译计算任务。最后针对每个子待编译计算任务,将该子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,其中,目标编译文件包括所有的子目标编译文件。
其中,图2所示的各个补正的具体实现方式在前文已叙述清楚,为简要描述,此处不再赘述。
基于同样的技术构思,本申请还提供一种应用于异构系统的编译装置,如图3所示,该编译装置100包括编译模块110和处理模块120。
编译模块110,用于基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件。
处理模块120,用于基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量。
编译模块110,还用于在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
一种实施方式下,所述算力资源量包括第一寄存器数量和/或第一线程数量;其中,所述第一寄存器数量表征所述第一计算设备执行所述初始编译文件需要使用的寄存器数量;所述第一线程数量表征所述第一计算设备执行所述初始编译文件需要使用的线程数量。
一种实施方式下,所述算力资源量包括所述第一寄存器数量和所述第一线程数量,所述预设条件包括所述第一寄存器数量小于第一预设阈值,所述第一线程数量小于第二预设阈值;其中,所述第一预设阈值和所述第二预设阈值根据所述第一计算设备的可用算力资源总量确定。
编译模块110,还用于在所述算力资源量满足预设条件的情况下,将所述初始编译文件作为最终输出的所述目标编译文件。
编译模块110,具体用于将所述预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,N为大于等于2的整数;将所述待编译计算任务拆分为N个子待编译计算任务;其中,N所述子待编译计算任务与N个所述计算设备一一对应;针对每个所述子待编译计算任务,将该子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,其中,所述目标编译文件包括所有的所述子目标编译文件。
编译模块110,还用于从所述异构系统下的所有的计算设备中,确定出能执行所述待编译计算任务的N个计算设备。
编译模块110,具体用于将所述预设编译参数中表征计算维度的参数进行修改,以使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低。
本申请实施例所提供的应用于异构系统的编译装置100,其实现原理及产生的技术效果和前述应用于异构系统的编译方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述应用于异构系统的编译方法实施例中相应内容。
请参阅图4,其为本申请实施例提供的一种电子设备200。所述电子设备200包括:处理器210、存储器220。
所述存储器220、处理器210各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,存储器220用于存储计算机程序,如存储有图3中所示的软件功能模块,即应用于异构系统的编译装置100。其中,应用于异构系统的编译装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(operating system,OS)中的软件功能模块。所述处理器210,用于执行存储器220中存储的可执行模块,例如应用于异构系统的编译装置100包括的软件功能模块或计算机程序。此时,处理器210,用于基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量;在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
其中,存储器220可以是,但不限于,RAM(Random Access Memory,随机存取存储器),ROM(Read Only Memory,只读存储器),PROM(Programmable Read-Only Memory,可编程只读存储器),EPROM(Erasable Programmable Read-Only Memory,可擦除只读存储器),EEPROM(Electric Erasable Programmable Read-Only Memory,电可擦除只读存储器)等。
处理器210可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器210也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于个人电脑、服务器等。
本申请实施例还提供了一种计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的应用于异构系统的编译方法。该计算机可读存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种应用于异构系统的编译方法,其特征在于,包括:
基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;
基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量;
在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
2.根据权利要求1所述的方法,其特征在于,所述算力资源量包括第一寄存器数量和/或第一线程数量;
其中,所述第一寄存器数量表征所述第一计算设备执行所述初始编译文件需要使用的寄存器数量;所述第一线程数量表征所述第一计算设备执行所述初始编译文件需要使用的线程数量。
3.根据权利要求2所述的方法,其特征在于,所述算力资源量包括所述第一寄存器数量和所述第一线程数量,所述预设条件包括所述第一寄存器数量小于第一预设阈值,所述第一线程数量小于第二预设阈值;其中,所述第一预设阈值和所述第二预设阈值根据所述第一计算设备的可用算力资源总量确定。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述算力资源量满足预设条件的情况下,将所述初始编译文件作为最终输出的所述目标编译文件。
5.根据权利要求1所述的方法,其特征在于,对所述预设编译参数进行修改,包括:
将所述预设编译参数中表征第一计算设备的参数修改为表征包括第一计算设备的N个计算设备,N为大于等于2的整数;
相应的,基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,包括:
将所述待编译计算任务拆分为N个子待编译计算任务;其中,N所述子待编译计算任务与N个所述计算设备一一对应;
针对每个所述子待编译计算任务,将该子待编译计算任务编译为该子待编译计算任务对应的计算模块支持格式的子目标编译文件,其中,所述目标编译文件包括所有的所述子目标编译文件。
6.根据权利要求5所述的方法,其特征在于,在将所述待编译计算任务拆分为N个子待编译计算任务之前,所述方法还包括:
从所述异构系统下的所有的计算设备中,确定出能执行所述待编译计算任务的N个计算设备。
7.根据权利要求1所述的方法,其特征在于,对所述预设编译参数进行修改,包括:
将所述预设编译参数中表征计算维度的参数进行修改,以使得基于修改后的编译参数编译得到的目标编译文件中的单个计算矩阵的维度降低。
8.一种应用于异构系统的编译装置,其特征在于,包括:
编译模块,用于基于预设编译参数对待编译计算任务进行编译处理,得到初始编译文件;
处理模块,用于基于所述初始编译文件,确定执行所述初始编译文件的第一计算设备,以及获取执行所述初始编译文件需要占用所述第一计算设备的算力资源量;
所述编译模块,还用于在所述第一计算设备执行所述初始编译文件所需的算力资源量与所述第一计算设备的可用算力资源总量不满足预设条件的情况下,对所述预设编译参数进行修改,并基于修改后的编译参数对所述待编译计算任务进行编译处理,得到目标编译文件,其中,所述第一计算设备执行所述目标编译文件所需的算力资源量低于所述第一计算设备执行所述初始编译文件所需的算力资源量。
9.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器和所述处理器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机运行时,执行如权利要求1-7中任一项所述的方法。
CN202311532391.7A 2023-11-16 2023-11-16 应用于异构系统的编译方法、装置、电子设备及存储介质 Pending CN117555550A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311532391.7A CN117555550A (zh) 2023-11-16 2023-11-16 应用于异构系统的编译方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311532391.7A CN117555550A (zh) 2023-11-16 2023-11-16 应用于异构系统的编译方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117555550A true CN117555550A (zh) 2024-02-13

Family

ID=89812316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311532391.7A Pending CN117555550A (zh) 2023-11-16 2023-11-16 应用于异构系统的编译方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117555550A (zh)

Similar Documents

Publication Publication Date Title
US8924701B2 (en) Apparatus and method for generating a boot image that is adjustable in size by selecting processes according to an optimization level to be written to the boot image
CN111625289B (zh) 应用程序快速启动方法、装置和电子设备
CN110262783B (zh) 一种接口生成方法、装置及终端设备
CN109656567B (zh) 异质化业务数据处理逻辑的动态方法和系统
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN111158715A (zh) 灰度发布控制方法及系统
CN110737425B (zh) 一种计费平台系统的应用程序的建立方法及装置
CN106933673B (zh) 调整组件逻辑线程数量的方法及装置
CN109324872B (zh) 一种对虚拟机改变的请求进行验证的方法和系统
CN111966383B (zh) 一种操作系统内核兼容性量化分析方法、系统和介质
CN106940714A (zh) 一种数据处理方法、装置及电子设备
CN108614697B (zh) 后台Dex编译管控的方法及装置
CN110347471B (zh) 层级式显示组件系统、显示组件调用方法和装置
CN111427630B (zh) 冷启动优化方法和装置、电子设备和存储介质
CN117555550A (zh) 应用于异构系统的编译方法、装置、电子设备及存储介质
CN112596842A (zh) 一种针对安卓系统sdk开发的屏幕适配方法及相关装置
US11372633B2 (en) Method, device and terminal apparatus for code execution and computer readable storage medium
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
CN109460397B (zh) 数据产出控制方法及装置、存储介质和电子设备
CN111061576B (zh) 一种实体对象的创建方法及系统
CN111538491A (zh) 数据事件处理方法、装置、设备和存储介质
CN111796817A (zh) 针对iOS高内聚低耦合处理方法、系统及电子设备
CN114327643B (zh) 机器指令预处理方法、电子设备及计算机可读存储介质
CN118132245A (zh) 资源分配方法、装置及电子设备
CN118349226A (zh) 单页应用系统交付方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination