【技术实现步骤摘要】
程序编译方法和装置
[0001]本申请涉及信息
,尤其涉及一种程序编译方法和装置。
技术介绍
[0002]随着人工智能技术的高速发展,传统的图形处理器(Graphics Processing Unit,GPU)和中央处理器(Central Processing Unit,CPU)已经不能满足日益增长的性能需求。因而业界的研究人员开始聚焦于人工智能(Artificial Intelligence,AI)芯片的研究以满足AI领域的性能需求。在AI系统栈上,由于硬件限制,多维数据的分块计算是必经之路,分块策略直接导致AI芯片的性能问题。AI芯片上往往要处理多维数据,而处理的多维数据在程序中是通过多层嵌套循环来表示的。在处理过程中,多维数据会被映射成一条指令,该映射过程称为张量化tensorize。
[0003]但在实际的场景中,由于多层循环嵌套中间夹杂着分支跳转指令,阻碍了tensorize过程,因而映射成指令的数目会受到一定程度限制。具体地,如图1所示,在多维数据的程序表示中,指令映射标签vmuls原始打在H_o轴下面,指令映射标签下所有程序代码会生成一条包含确定执行过程的指令,但由于if条件(即程序执行不确定)限制,在多维数据映射过程中,指令映射标签需要下移到if条件分支下,从而使生成的指令数量远远大于理论上的9条。
[0004]因此,当多维数据的切分不规则时,在多维数据映射过程中,尾块数据无法进行有效的tensorize,严重影响单指令多数据(Single Instruction,Multipl ...
【技术保护点】
【技术特征摘要】
1.一种程序编译方法,其特征在于,所述方法包括:获取第一程序;其中,所述第一程序包括多层循环语句,所述多层循环语句中每层循环语句的循环条件包括变量和所述变量的取值区间,所述多层循环语句的循环体中包括至少一个条件语句;所述多层循环语句包括第一循环语句;其中,所述第一循环语句为所述多层循环语句中的一层循环语句,所述第一循环语句的循环条件中包括的变量为第一变量,且所述第一变量为所述至少一个条件语句中的第一条件语句所包含变量中的一个;对所述第一循环语句中第一变量的取值区间进行处理,以得到与所述第一循环语句对应的至少一个循环语句;其中,所述至少一个循环语句中包括第二循环语句,所述第一循环语句和所述第二循环语句都包括所述第一变量,所述第二循环语句中第一变量的取值区间为第一区间,所述第一区间为所述第一循环语句中第一变量的取值区间的子集,所述第一区间使得所述第一条件语句恒成立;基于所述至少一个循环语句对所述第一程序进行编译,以得到所述第一程序的编译结果,所述第一程序的编译结果与所述至少一个循环语句有关。2.根据权利要求1所述的方法,其特征在于,所述第一程序包括指令映射标签;当预估的所述第一程序的编译结果的映射时间大于预设时间时,所述第一变量为所述指令映射标签下方循环语句的循环条件和所述至少一个条件语句共同包含变量中的一个;所述预估映射时间为将所述第一程序的编译结果映射为在硬件上可执行指令的过程所需要的时间;当所述预估的所述第一程序的编译结果的映射时间小于或等于所述预设时间时,所述第一变量为所述多层循环语句中每层循环语句的循环条件和所述至少一个条件语句共同包含变量中的一个。3.根据权利要求2所述的方法,其特征在于,所述预估的所述第一程序的编译结果的映射时间是基于所述至少一个条件语句包含变量的数量、所述多层循环语句的层数、所述至少一个条件语句包含变量的模糊区间或所述条件语句的数量中的一个或多个决定的;其中,当所述变量的取值为所述变量的模糊区间中的数值时,包含所述变量的条件语句是否成立还与其它因素有关。4.根据权利要求2或3中所述的方法,其特征在于,所述与所述第一循环语句对应的至少一个循环语句中还包括第三循环语句;其中,所述第一变量在所述第三循环语句中的取值区间为第二区间,且当所述第一变量的取值为所述第二区间中的数值时,所述第一条件语句是否成立还与其它因素有关。5.根据权利要求4所述的方法,其特征在于,所述第一条件语句还包括第二变量,所述方法还包括:当所述预估的所述第一程序的编译结果的映射时间大于所述预设时间,且所述第二变量为所述指令映射标签下方循环语句的循环条件和所述至少一个条件语句共同包含变量中的一个;或者,当所述预估的所述第一程序的编译结果的映射时间小于或等于所述预设时间,且所述第二变量为所述多层循环语句中每层循环语句的循环条件和所述至少一个条件语句共同包含变量中的一个时,对所述第三循环语句中第一变量的第二区间进行处理,得到一个或多个第四循环语句;
其中,每个所述第四循环语句中的第一变量的取值区间为所述第二区间的子集。6.根据权利要求4所述的方法,其特征在于,所述第一条件语句还包括第二变量,所述第二变量在所述第三循环语句中的取值区间为第三区间;所述方法还包括:当所述预估的所述第一程序的编译结果的映射时间大于所述预设时间,且所述第二变量为所述指令映射标签上方的循环语句的循环条件中包含的变量时,对所述第三循环语句中的第三区间进行处理,得到一个或多个第五循环语句;其中,每个所述第五循环语句中第二变量的取值区间为所述第三区间的子集。7.根据权利要求1
‑
6中任一项所述的方法,其特征在于,所述每层循环语句的循环条件包括的变量的取值区间的两个端点为常数,且所述至少一个条件语句包含的变量都为所述多层循环语句的循环条件中包含的变量。8.一种程序编译方法,其特征在于,所述方法包括:获取第二程序;其中,所述第二程序包括多层循环语句,每层循环语句的循环条件包括变量和所述变量的取值区间,所述多层循环语句的循环体中包括至少一个条件语句;所述多层循环语句包括第五循环语句;其中,所述第五循环语句为所述多层循环语句中的一层循环语句,所述第五循环语句的循环条件中包括的变量为第三变量,且所述第三变量为所述至少一个条件语句中的第二条件语句所包含变量中的一个;对所述第五循环语句中第三变量的第一取值区间进行更新,以得到第六循环语句;其中,更新后的所述第一取值区间使所述第二条件语句恒成立;基于所述第六循环语句对所述第二程序进行编译,以得到所述第二程序的编译结果;所述第二程序的编译结果与所述第六循环语句有关。9.根据权利要求8所述的方法,其特征在于,所述第二程序包括指令映射标签;所述第三变量为所述指令映射标签下方循环语句的循环条件和所述至少一个条件语句共同包含变量中的一个。10.根据权利要求8或9所述的方法,其特征在于,所述对所述第五循环语句中第三变量的第一取值区间进行更新,包括:基于所述第二条件语句得到所述第三变量的第二取值区间;利用所述第一取值区间和所述第二取值区间的交集更新所述第一取值区间。11.根据权利要求8
‑
10中任一项所述的方法,其特征在于,所述每层循环语句的循环条件包括的变量的取值区间的两个端点中至少一个为非常数和/或所述至少一个条件语句中每个条件语句还包括第四变量,其中,所述第四变量为未被包含于所述每层循环语句的循环条件中的变量。12.一种程序编译装置,其特征在于,所述装置包括:获取单元,用于获取第一程序;其中,所述第一程序包括多层循环语句,所述多层循环语句中每层循环语句的循环条件包括变量和所述变量的取值区间,所述多层循环语句的循环体中包括至少一个条件语句;所述多层循环语句包括第一循环语句;其中,所述第一循环语句为所述多层循环语句中的一层循环语句,所述第一循环语句的循环条件中包括的变量为第一变量,且所述第一变量为所述至少一个条件语句中的第一条件语句所包含变量中的一个;处理单元...
【专利技术属性】
技术研发人员:刘志康,吴凌飞,陆敬磊,徐子明,程琛,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。