一种循环程序的指令优化方法、装置、系统、设备及介质与流程



1.本发明涉及计算机技术领域,尤其涉及一种循环程序的指令优化方法、装置、系统、设备及介质。


背景技术:



2.随着计算机技术的快速发展,由于面向矩阵及张量的运算,如,向量乘、向量矩阵乘、矩阵乘或卷积等,通常计算量较大、执行频率高且持续时间长。因此,提升面向矩阵及张量的运算性能十分重要。
3.现有技术中,通常需要程序员利用矩阵运算指令完成面向矩阵及张量的运算。然而,由于矩阵运算指令通常对数据类型、矩阵形状、输入数据的加载及输出结果的存放都有特定的约束。因此,为了达到理想的计算性能通常还需要经验丰富的程序员精心撰写汇编代码或使用编译器支持的原语,使得优化后的指令能够充分利用底层硬件实现运算加速。
4.但是,现有技术所使用的方法,程序的研发周期通常较长、代码复用及可移植性有限,并且,需要预先感知底层硬件指令,在不感知底层硬件指令的情况下使用高级编程语言进行应用开发,如若编译器无法在编译过程中将高级编程语言撰写的程序透明地转换为应用矩阵运算指令的代码,从而将矩阵运算功能单元高效利用起来,则会降低底层硬件的利用率、无法有效提升程序的运行性能。因此,如何在提高底层运算模块的利用率、提升程序的运行性能的同时,降低程序研发周期,实现程序指令的优化,是目前亟待解决的问题。


技术实现要素:



5.本发明提供了一种循环程序的指令优化方法、装置、系统、设备及介质,可以在提高底层运算模块的利用率、提升循环程序运算性能,降低程序研发周期的基础上,实现程序指令的优化。
6.根据本发明的一方面,提供了一种循环程序的指令优化方法,包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。
7.根据本发明的另一方面,提供了一种循环程序的指令优化装置,包括:目标循环程序获取模块,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;后处理循环程序生成模块,用于依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;可执行文件生成模块,用于依据底层运算模块对应的存储规则,根据后处理循环
程序建立对应的可执行文件,并传输至底层运算模块内执行。
8.根据本发明的另一方面,提供了一种循环程序的指令优化系统,包括:编译器,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行;底层运算模块,用于接收并执行编译器传输的可执行文件。
9.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:编译器、底层运算模块、至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的循环程序的指令优化方法。
10.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的循环程序的指令优化方法。
11.本发明实施例的技术方案,通过将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;进而,依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;最终,依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行,解决了程序指令优化过程周期较长、代码复用及可移植性有限的问题,可以在提高底层运算模块的利用率与程序运算性能,降低程序研发周期的基础上,实现程序指令的优化。
12.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
13.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1是根据本发明实施例一提供的一种循环程序的指令优化方法的流程图;图2a是根据本发明实施例二提供的一种循环程序的指令优化方法的流程图;图2b是根据本发明实施例二提供的一种可选的循环程序的指令优化方法的流程图;图3是根据本发明实施例三提供的一种循环程序的指令优化装置的结构示意图;图4是根据本发明实施例四提供的一种循环程序的指令优化系统的结构示意图;图5是实现本发明实施例的循环程序的指令优化方法的电子设备的结构示意图。
具体实施方式
15.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
16.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
17.实施例一图1为本发明实施例一提供了一种循环程序的指令优化方法的流程图,本实施例可适用于将高级编程语言编写的计算逻辑循环程序自动转化为等价的使用了向量矩阵乘指令的机器代码的情况,该方法可以由循环程序的指令优化装置来执行,该循环程序的指令优化装置可以采用硬件和/或软件的形式实现,该循环程序的指令优化装置可配置于电子设备中。如图1所示,该方法包括:s110、将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序。
18.其中,输入的循环程序可以指需要进行指令优化的计算逻辑源代码,示例性的,可以为由高级编程语言,如c语言或c++语言编写的计算逻辑源代码,如,for循环代码。
19.其中,底层运算模块可以指运行循环程序对应的计算逻辑的模块。示例性的,可以为中央处理器(central processing unit,cpu)。循环模式可以指底层运算模块能够执行的计算逻辑所需满足的格式条件。示例性的,可以包含计算逻辑中的循环次数个数,也可以包含计算逻辑中循环结构体的格式要求等。目标循环程序可以指与底层运算模块匹配的循环模式相匹配的循环程序。
20.由此,通过将输入的循环程序与底层运算模块匹配的循环模式进行匹配,可以在不感知底层运算模块所支持指令类型的条件下,筛选得到与底层运算模块匹配的循环模式匹配的目标循环程序,为后续的操作提供有效的基础。
21.s120、依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序。
22.其中,数据格式可以指底层运算模块所支持的数据大小。示例性的,若底层运算模块的计算逻辑为矩阵矩阵乘,则对应的数据格式可以为矩阵的大小。
23.其中,循环分块可以指将设定循环条件按照底层运算模块对应的数据格式进行分组,以将多个循环迭代合并从而利用底层硬件一次性处理。循环交换处理可以指将设定循环条件进行顺序交换。后处理循环程序可以指经循环分块及循环交换处理后得到的循环程序。
24.由此,通过依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环交换处理,可以改善数据访问的局部性,能够使更多的数组连续的返回存储。
25.s130、依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。
26.其中,存储规则可以指底层运算模块中预先设定的各个寄存器与存储数据的对应规则。值得注意的是,通常不同平台设定的寄存器名称不同。可执行文件可以指底层运算模块能够执行的张量代码。
27.本发明实施例的技术方案,通过将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;进而,依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;最终,依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行,解决了程序指令优化过程周期较长、代码复用及可移植性有限的问题,可以在提高底层运算模块利用率与程序执行性能,降低程序研发周期的基础上,实现程序指令的优化。
28.实施例二图2a为本发明实施例二提供的一种循环程序的指令优化方法的流程图,本实施例以上述实施例为基础进行细化,在本实施例中具体是对将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序的操作进行细化,具体可以包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,判断所述输入的循环程序是否满足与底层运算模块匹配的循环模式;若是,将输入的循环程序作为目标循环程序;若否,依据预设逻辑变换原则,将输入的循环程序中所包含的循环体逻辑进行变换,得到待选循环程序,并将所述待选循环程序与底层运算模块匹配的循环模式进行匹配,若所述待选循环程序满足与底层运算模块匹配的循环模式,则将所述待选循环程序作为目标循环程序。如图2a所示,该方法包括:s210、获取底层运算模块对应的运算指令;其中,运算指令中包括底层运算模块对应的运算指令功能、数据格式及循环嵌套层数。
29.其中,运算指令功能可以指底层运算模块对应的运算逻辑所实现的功能。示例性的,可以为向量矩阵乘指令功能。循环嵌套层数可以指循环程序中嵌套的层数。示例性的,若为for循环程序,则循环嵌套的层数可以为for循环个数。
30.具体的,若底层运算模块对应的运算指令功能为向量矩阵乘指令;数据格式为向量vi长度为n,矩阵m的形状为[n,m],结果向量vo长度为m;循环嵌套层数为2。则底层运算模块对应的for循环模式,可以如下所示:s220、根据所述循环嵌套层数及标准循环结构体格式建立循环结构体判断条件。
[0031]
其中,标准循环结构体格式可以指标准的循环结构体格式。循环结构体判断条件可以指对循环结构体的格式进行判断的条件。
[0032]
具体的,循环结构体判断条件可以包括循环结构体中嵌套循环的层数不少于底层运算模块对应的循环嵌套层数;循环结构体符合完美嵌套循环,即仅最内层循环含有循环体;循环结构体中不包含分支跳转,即不包含if 、else if 、return等关键字。
[0033]
s230、根据所述运算指令功能建立运算逻辑判断条件。
[0034]
其中,运算逻辑判断条件可以指对循环结构体中包含的运算逻辑进行判断的条件。示例性的,可以为判断运算逻辑是否仅包含乘加运算逻辑。具体的,可以根据a=a+b*c格式,建立运算逻辑判断条件。值得注意的是,当循环结构体中有且仅有a=a+b*c格式的运算逻辑时,方才满足运算逻辑判断条件。值得注意的是,本发明实施例中对循环结构体中a=a+b*c格式的运算逻辑的数量不进行限制。
[0035]
s240、根据所述数据格式建立循环次数判断条件。
[0036]
其中,循环次数判断条件可以指对循环结构体中的循环次数进行判断的条件。示例性的,可以将循环次数判断条件设定为循环结构体中的循环次数应为对应数据结构的整数倍。
[0037]
具体的,若循环结构体中循环变量j对应的数据格式为m,循环变量k对应的数据格式为n,则当循环变量j为m的整数倍,循环变量k为n的整数倍时,即可满足循环次数判断条件。
[0038]
值得注意的是,在根据数据格式建立循环次数判断条件的基础上,还可以对循环结构体中的访存行为进行条件判断。示例性的,若循环结构体中的运算逻辑形如:a=a+b*c,数组形式为:,则访存行为判断条件具体可以为:a、b与c所访问的存储空间不相互重叠,即不存在数据依赖;若a、b与c中不存在常数,则a、b与c的数组下标均为循环变量的仿射多项式,即对于循环变量i、j、k,数组下标可表示为a+bi+cj+dk;若a和c均为数组访问,其数据的连续访问受控于唯一且相同的循环变量j;若b为数组访问,其数据的连续访问受控于唯一的循环变量k,且k与j不同;若a和b均为数组访问,a的数组下标中不含循环变量k,b的数组下标中不含循环变量j。由此,通过建立访存行为判断条件,可以助于简化后续循环变换的复杂度,同时能够保证输入计算数据在存储器上连续存放,以高效地完成数据读取与写回。
[0039]
s250、将所述循环结构体判断条件、运算逻辑判断条件及循环次数判断条件组合,生成底层运算模块匹配的循环模式。
[0040]
s260、将输入的循环程序与底层运算模块匹配的循环模式进行匹配,判断所述输入的循环程序是否满足与底层运算模块匹配的循环模式;若是,执行s270;若否,执行s280。
[0041]
s270、将输入的循环程序作为目标循环程序,并执行s290。
[0042]
具体的,若底层运算模块对应的运算指令功能为向量矩阵乘指令;数据格式为:数组b的长度为n,数组c的形状为[n,m],结果向量a的长度为m;循环嵌套层数为两层。则符合底层运算模块匹配的循环模式的目标循环程序可如下所示:
s280、依据预设逻辑变换原则,将输入的循环程序中所包含的循环体逻辑进行变换,得到待选循环程序,并将所述待选循环程序与底层运算模块匹配的循环模式进行匹配,若所述待选循环程序满足与底层运算模块匹配的循环模式,则将所述待选循环程序作为目标循环程序。
[0043]
其中,逻辑变换原则可以指对循环结构体中的循环体逻辑进行逻辑变换的规则。循环体逻辑可以指输入的循环程序中所包含的运算逻辑。待选循环程序可以指初步进行逻辑变换后得到的循环程序。
[0044]
具体的,逻辑变换原则可以为:若循环结构体内的循环体逻辑为a=b*c,则将其变换为a=0+b*c;若循环结构体内的循环体逻辑为a=a+c,则将其变换为a=a+1*c;若循环结构体内的循环体逻辑为a=b*c-a,则将其变换为a=(-a)+b*c;若循环结构体内的循环体逻辑为a=a+b/c,则将其变换为a=a+b*(1/c);若循环结构体内的循环体逻辑为a=b/c,则将其变换为a=0+b*(1/c);若循环结构体内的循环体逻辑为a=c-a,则将其变换为a=(-a)+1*c。
[0045]
由此,通过适量增加额外运算或操作数来变换输入的循环程序中所包含的循环体逻辑,可以更大范围地生成高效能的目标循环程序进行程序加速。
[0046]
s290、将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件。
[0047]
其中,内层循环变量可以指循环条件中最内层的循环变量。第一数据格式可以指底层运算模块中内层循环变量对应的数据格式。第一循环条件可以指按照第一数据格式对内层循环变量的循环步进进行处理后生成的循环条件。
[0048]
具体的,若目标循环程序如下所示:则,第一数据格式可以为n,相应的第一循环条件可以为:。
[0049]
在一个可选的实施方式中,在将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件之前,还包括:判断循环条件中内层循环变量对应的循环步进是否为标准步进值,若所述内层循环变量对应的循环步进非标准步进值,则标准化处理所述内层循环变量对应的循环步进。
[0050]
其中,标准步进值可以指单次步进的标准数值,示例性的,可以为1。非标准步进值
可以指除标准步进值外的其余任意数值。具体的,在将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件之前,需要检查循环条件中内层循环变量对应的循环步进是否为1,若循环步进不为1,则需要对该循环步进进行标准化处理,将该循环步进的数值变为1。由此,通过对内层循环变量对应的循环步进进行检查及标准化处理,可以为后续的操作提供有效的基础。
[0051]
s2100、将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件。
[0052]
其中,外层循环变量可以指循环条件中次内层的循环变量,即邻近内层循环变量的循环变量。第二数据格式可以指底层运算模块中外层循环变量对应的数据格式。第二循环条件按照第二数据格式对外层循环变量的循环步进进行处理后生成的循环条件。
[0053]
具体的,若目标循环程序如下所示:则,第二数据格式可以为m,相应的第二循环条件可以为:。
[0054]
在一个可选的实施方式中,在将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件之前,还包括:判断循环条件中外层循环变量对应的循环步进是否为标准步进值,若所述外层循环变量对应的循环步进非标准步进值,则标准化处理所述外层循环变量对应的循环步进。
[0055]
具体的,在将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件之前,需要检查循环条件中外层循环变量对应的循环步进是否为1,若循环步进不为1,则需要对该循环步进进行标准化处理,将该循环步进的数值变为1。由此,通过对外层循环变量对应的循环步进进行检查及标准化处理,可以为后续的操作提供有效的基础。
[0056]
s2110、根据内层循环变量及外层循环变量的存在情况,将所述第一循环条件及第二循环条件进行位置变换,得到后处理循环程序。
[0057]
其中,内层循环变量及外层循环变量的存在情况可以指内层循环变量及外层循环变量的数据访问连续情况。当内层循环变量及外层循环变量中连续访问的数组较少时,如少于数组量总数的一半,则可以采用位置交换的方式,增大连续访问的数组量。后处理循环程序可以指将第一循环条件及第二循环条件进行位置变换后得到的循环程序。
[0058]
具体的,若目标循环程序如下所示:
由上可知,目标循环程序中仅有数组b为连续访问,数据a和数组c为非连续访问,则为了增大连续访问的数组数量,经第一循环条件及第二循环条件进行位置变换后,得到的后处理循环程序的形式可以为:值得注意的是,若目标循环程序中内层循环变量及外层循环变量中连续访问的数组较多时,如大于数组量总数的一半,则可以将生成第一循环条件和第二循环条件后的循环程序直接作为后处理循环程序,无需再次进行循环交换处理。
[0059]
s2120、依据底层运算模块对应的存储规则获取后处理循环程序中各个数组对应的寄存器名称。
[0060]
其中,各个数组对应的寄存器彼此独立。
[0061]
s2130、依据后处理循环程序及各个数组对应的寄存器建立对应的可执行文件,并传输至底层运算模块内执行。
[0062]
具体的,以运算指令功能为向量矩阵乘指令功能为例。则可以对后处理循环程序的内层循环体中的每一条形如a=a+b*c的代码语句作如下处理:将a数组的连续m个数据元素从存储器读取到向量寄存器rvo,将b数组的连续n个数据元素从存储器读取到向量寄存器rvi,将c数组的n组连续m个数据元素从存储器读取到矩阵寄存器rm,以rvo、rvi及rm作为操作数使用向量矩阵乘指令进行计算,将存放在向量寄存器rvo中的计算结果写回到存储器。由此,可以生成运用了向量矩阵乘指令的代码。
[0063]
值得注意的是,不同硬件平台所对应的寄存器名称不同。并且,若后处理循环程序是通过预设逻辑变换原则得到,则可以针对新增的额外运算或操作数产生对应的代码,以保证代码的完整性。
[0064]
本发明实施例的技术方案,通过将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;进而,依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;最终,依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行,解决了程序指令优化过程周期较长、代码复用及可移植性有限的问题,可以在提高底层运算模块的利用率与程序运算性能,降低程序研发周期的基础上,实现程序指令的优化。
[0065]
图2b是根据本发明实施例二提供的一种可选的循环程序的指令优化方法的流程图;具体的,获取底层运算模块对应的运算指令,以运算指令中的运算指令功能为向量矩阵乘指令功能为例,则根据底层运算模块对应的运算指令生成与向量矩阵乘指令功能等价的for循环模式(即与底层运算模块匹配的循环模式),进而,将输入的高级编程语言编写的for循环程序(即输入的循环程序)和与向量矩阵乘指令功能等价的for循环模式进行匹配,完成向量矩阵乘模式识别;将向量矩阵乘模式识别成功的循环程序作为目标循环程序;若向量矩阵乘模式识别失败,则依据预设逻辑变换原则,将输入的循环程序中所包含的循环体逻辑进行变换,得到待选循环程序,并将待选循环程序与底层运算模块匹配的循环模式进行匹配,若待选循环程序满足与底层运算模块匹配的循环模式,则将待选循环程序作为目标循环程序,若待选循环程序仍不满足与底层运算模块匹配的循环模式,则输出未优化的代码;进一步的,将目标循环程序的循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件;将目标循环程序的循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件;并将第一循环条件及第二循环条件进行位置变换,得到后处理循环程序,实现for循环结构的变换;最后,依据底层运算模块对应的存储规则获取后处理循环程序中各个数组对应的寄存器名称,并依据后处理循环程序及各个数组对应的寄存器生成for循环结构体核心代码,以建立对应的可执行文件,并传输至底层运算模块内执行运用向量矩阵乘指令优化后的代码。
[0066]
实施例三图3为本发明实施例三提供的一种循环程序的指令优化装置的结构示意图。如图3所示,该装置包括:目标循环程序获取模块310、后处理循环程序生成模块320及可执行文件生成模块330;其中,目标循环程序获取模块310,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;后处理循环程序生成模块320,用于依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;可执行文件生成模块330,用于依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。
[0067]
本发明实施例的技术方案,通过将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;进而,依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;最终,依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行,解决了程序指令优化过程周期较长、代码复用及可移植性有限的问题,可以在提高底层运算模块的的利用率与程序运算性能,降低程序研发周期的基础上,实现程序指令的优化。
[0068]
可选的,循环程序的指令优化装置,还可以包括:循环模式生成模块,用于在将输入的循环程序与底层运算模块匹配的循环模式进行匹配之前,获取底层运算模块对应的运算指令;其中,运算指令中包括底层运算模块对应的运算指令功能、数据格式及循环嵌套层数;根据所述循环嵌套层数及标准循环结构体格式建立循环结构体判断条件;根据所述运
算指令功能建立运算逻辑判断条件;根据所述数据格式建立循环次数判断条件;将所述循环结构体判断条件、运算逻辑判断条件及循环次数判断条件组合,生成底层运算模块匹配的循环模式。
[0069]
可选的,目标循环程序获取模块310,具体可以用于:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,判断所述输入的循环程序是否满足与底层运算模块匹配的循环模式;若是,将输入的循环程序作为目标循环程序;若否,依据预设逻辑变换原则,将输入的循环程序中所包含的循环体逻辑进行变换,得到待选循环程序,并将所述待选循环程序与底层运算模块匹配的循环模式进行匹配,若所述待选循环程序满足与底层运算模块匹配的循环模式,则将所述待选循环程序作为目标循环程序。
[0070]
可选的,后处理循环程序生成模块320,具体可以用于:将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件;将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件;根据内层循环变量及外层循环变量的存在情况,将所述第一循环条件及第二循环条件进行位置变换。
[0071]
可选的,循环程序的指令优化装置,还可以包括:循环步进第一处理模块,用于在将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件之前,判断循环条件中内层循环变量对应的循环步进是否为标准步进值,若所述内层循环变量对应的循环步进非标准步进值,则标准化处理所述内层循环变量对应的循环步进;循环程序的指令优化装置,还可以包括:循环步进第二处理模块,用于在将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件之前,判断循环条件中外层循环变量对应的循环步进是否为标准步进值,若所述外层循环变量对应的循环步进非标准步进值,则标准化处理所述外层循环变量对应的循环步进。
[0072]
可选的,可执行文件生成模块330,具体可以用于:依据底层运算模块对应的存储规则获取后处理循环程序中各个数组对应的寄存器名称;其中,各个数组对应的寄存器彼此独立;依据后处理循环程序及各个数组对应的寄存器建立对应的可执行文件。
[0073]
本发明实施例所提供的循环程序的指令优化装置可执行本发明任意实施例所提供的循环程序的指令优化方法,具备执行方法相应的功能模块和有益效果。
[0074]
实施例四图4为本发明实施例四提供的一种循环程序的指令优化系统的结构示意图。如图4所示,该系统包括:编译器410及底层运算模块420;其中,编译器410,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行;底层运算模块420,用于接收并执行编译器传输的可执行文件。
[0075]
实施例五图5示出了可以用来实施本发明的实施例的电子设备510的结构示意图。电子设备
旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0076]
如图5所示,电子设备510包括编译器5110、底层运算模块5120、至少一个处理器520,以及与至少一个处理器520通信连接的存储器,如只读存储器(rom)530、随机访问存储器(ram)540等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器520可以根据存储在只读存储器(rom)530中的计算机程序或者从存储单元590加载到随机访问存储器(ram)540中的计算机程序,来执行各种适当的动作和处理。在ram 540中,还可存储电子设备510操作所需的各种程序和数据。处理器520、rom 530、编译器5110、底层运算模块5120以及ram540通过总线550彼此相连。输入/输出(i/o)接口560也连接至总线550。
[0077]
电子设备510中的多个部件连接至i/o接口560,包括:输入单元570,例如键盘、鼠标等;输出单元580,例如各种类型的显示器、扬声器等;存储单元590,例如磁盘、光盘等;以及通信单元5100,例如网卡、调制解调器、无线通信收发机等。通信单元5100允许电子设备510通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0078]
处理器520可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器520的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器520执行上文所描述的各个方法和处理,例如循环程序的指令优化方法。
[0079]
该方法包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。
[0080]
在一些实施例中,循环程序的指令优化方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元590。在一些实施例中,计算机程序的部分或者全部可以经由rom 530和/或通信单元5100而被载入和/或安装到电子设备510上。当计算机程序加载到ram 540并由处理器520执行时,可以执行上文描述的循环程序的指令优化方法的一个或多个步骤。备选地,在其他实施例中,处理器520可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行循环程序的指令优化方法。
[0081]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器
可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0082]
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0083]
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0084]
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0085]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
[0086]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0087]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0088]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明
的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:


1.一种循环程序的指令优化方法,其特征在于,包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。2.根据权利要求1所述的方法,其特征在于,在将输入的循环程序与底层运算模块匹配的循环模式进行匹配之前,还包括:获取底层运算模块对应的运算指令;其中,运算指令中包括底层运算模块对应的运算指令功能、数据格式及循环嵌套层数;根据所述循环嵌套层数及标准循环结构体格式建立循环结构体判断条件;根据所述运算指令功能建立运算逻辑判断条件;根据所述数据格式建立循环次数判断条件;将所述循环结构体判断条件、运算逻辑判断条件及循环次数判断条件组合,生成底层运算模块匹配的循环模式。3.根据权利要求1所述的方法,其特征在于,所述将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序,包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,判断所述输入的循环程序是否满足与底层运算模块匹配的循环模式;若是,将输入的循环程序作为目标循环程序;若否,依据预设逻辑变换原则,将输入的循环程序中所包含的循环体逻辑进行变换,得到待选循环程序,并将所述待选循环程序与底层运算模块匹配的循环模式进行匹配,若所述待选循环程序满足与底层运算模块匹配的循环模式,则将所述待选循环程序作为目标循环程序。4.根据权利要求1所述的方法,其特征在于,所述依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,包括:将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件;将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件;根据内层循环变量及外层循环变量的存在情况,将所述第一循环条件及第二循环条件进行位置变换。5.根据权利要求4所述的方法,其特征在于,在将循环条件中内层循环变量对应的循环步进乘以底层运算模块对应的第一数据格式,生成第一循环条件之前,还包括:判断循环条件中内层循环变量对应的循环步进是否为标准步进值,若所述内层循环变量对应的循环步进非标准步进值,则标准化处理所述内层循环变量对应的循环步进;在将循环条件中外层循环变量对应的循环步进乘以底层运算模块对应的第二数据格式,生成第二循环条件之前,还包括:判断循环条件中外层循环变量对应的循环步进是否为标准步进值,若所述外层循环变
量对应的循环步进非标准步进值,则标准化处理所述外层循环变量对应的循环步进。6.根据权利要求1所述的方法,其特征在于,所述依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,包括:依据底层运算模块对应的存储规则获取后处理循环程序中各个数组对应的寄存器名称;其中,各个数组对应的寄存器彼此独立;依据后处理循环程序及各个数组对应的寄存器建立对应的可执行文件。7.一种循环程序的指令优化装置,其特征在于,包括:目标循环程序获取模块,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;后处理循环程序生成模块,用于依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;可执行文件生成模块,用于依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。8.一种循环程序的指令优化系统,其特征在于,包括:编译器,用于将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行;底层运算模块,用于接收并执行编译器传输的可执行文件。9.一种电子设备,其特征在于,所述电子设备包括:编译器、底层运算模块、至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的循环程序的指令优化方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的循环程序的指令优化方法。

技术总结


本发明公开了一种循环程序的指令优化方法、装置、系统、设备及介质。该方法包括:将输入的循环程序与底层运算模块匹配的循环模式进行匹配,得到目标循环程序;依据底层运算模块对应的数据格式将目标循环程序中的循环条件进行循环分块及循环交换处理,得到后处理循环程序;依据底层运算模块对应的存储规则,根据后处理循环程序建立对应的可执行文件,并传输至底层运算模块内执行。通过本发明的技术方案,能够将输入的循环程序转换为底层运算模块对应的可执行文件,提高了循环程序的运行性能,降低了程序的研发周期。降低了程序的研发周期。降低了程序的研发周期。


技术研发人员:

周浩 张亚林 官孝峰 胡正平 姚建国

受保护的技术使用者:

北京燧原智能科技有限公司

技术研发日:

2022.11.02

技术公布日:

2022/12/12

本文发布于:2024-09-20 17:24:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/34065.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   底层   模块   步进
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议