本申请涉及编译器领域,特别涉及一种编译方法、装置、设备及存储介质。
背景技术:
1、近年来,随着人工智能(artificial intelligence,ai)的迅猛发展,为许多领域带来了革命性的技术变革,例如自然语言处理、计算机视觉、电子商务、智慧城市、药物研发等领域。
2、为了构建完整的应用生态,需要设计开发ai配套的工具链,其中ai编译器是一项关键性的工作。ai编译器用来将ai模型的算法编译成可执行的机器码,即,根据ai模型的程序生成可以运行在ai芯片上的目标程序。
3、然而,在ai模型的基本计算单元算子中,存在大量的循环指令结构,消耗了主要的ai芯片执行时间。为了减少循环指令结构的执行时间,引入了软流水优化,来优化循环指令结构的编译算法。
技术实现思路
1、本申请提供了一种编译方法、装置、设备及存储介质,上述方法提供了一种软流水算法,可以提高循环bb的编译和执行效率。所述技术方案包括如下内容。
2、根据本申请的一个方面,提供了一种编译方法,所述方法包括如下步骤。
3、循环展开循环bb(basic block,基本块)中的指令序列,生成三倍bb和所述三倍bb对应的三倍dag(directed acyclic graph,有向无环图);所述三倍bb包括循环三次的所述指令序列;所述三倍dag用于指示所述三倍bb中各个指令间的数据依赖关系;
4、基于所述三倍bb进行窗口调度,确定目标调度窗口;所述窗口调度用于根据调度窗口将所述循环bb中的所述指令序列分割为两部分,使当前循环中的第二部分指令序列与下一次循环中的第一部分指令序列同步执行;所述目标调度窗口是执行时间满足时间条件的调度窗口,所述执行时间是根据所述三倍dag中的数据依赖关系计算得到的执行窗口内指令所需的时间;
5、根据所述目标调度窗口对应的调度结果,编译得到所述循环bb在目标程序的目标代码。
6、根据本申请的另一方面,提供了一种编译装置,所述装置包括如下模块。
7、循环模块,用于循环展开循环基本块bb中的指令序列,生成三倍bb和所述三倍bb对应的三倍有向无环图dag;所述三倍bb包括循环三次的所述指令序列;所述三倍dag用于指示所述三倍bb中各个指令间的数据依赖关系;
8、调度模块,用于基于所述三倍bb进行窗口调度,确定目标调度窗口;所述窗口调度用于根据调度窗口将所述循环bb中的所述指令序列分割为两部分,使当前循环中的第二部分指令序列与下一次循环中的第一部分指令序列同步执行;所述目标调度窗口是执行时间满足时间条件的调度窗口,所述执行时间是根据所述三倍dag中的数据依赖关系计算得到的执行窗口内指令所需的时间;
9、编译模块,用于根据所述目标调度窗口对应的调度结果,编译得到所述循环bb在目标程序的目标代码。
10、根据本申请的一个方面,提供了一种计算机设备,计算机设备包括:处理器和存储器,存储器存储有计算机程序,计算机程序由处理器加载并执行以实现如上的编译方法。
11、根据本申请的另一方面,提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序由处理器加载并执行以实现如上的编译方法。
12、根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述编译方法。
13、本申请实施例提供的技术方案带来的有益效果至少包括如下内容。
14、提供了一种软流水算法,对ai模型中的循环bb进行编译。使用窗口调度算法将循环bb分割为前后两部分,使下一次循环的前部分指令与当前循环的后部分指令同步执行,节省指令执行时间。为了找到最佳分割位置,使执行时间最短,将循环bb复制三次得到三倍bb和三倍dag,在三倍bb上尝试多种调度窗口,用调度窗口框选出第一次循环bb中的后部分指令和第二次循环bb中的前部分指令。并根据三倍dag中指示的各个指令的数据依赖关系,来计算每个调度窗口内的两部分指令同步执行后所需的执行时间。进而从多种调度窗口中选择执行时间最短的调度窗口作为最终的目标调度窗口,目标调度窗口所对应的分割位置即为最佳分割位置。按照目标调度窗口来的调度结果来编译循环bb,就可以提高循环bb的编译效率,使编译后得到的目标程序的目标代码执行时间最短。
1.一种编译方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述三倍bb进行窗口调度,确定目标调度窗口,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述调度结果和所述三倍dag计算所述候选调度窗口对应的执行时间,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述调度结果计算所述候选调度窗口对应的最大发射时间,包括:
5.根据权利要求3所述的方法,其特征在于,所述根据所述调度结果和所述三倍dag计算所述候选调度窗口对应的最大暂停时间,包括:
6.根据权利要求5所述的方法,其特征在于,所述第i条指令与第x指令具有数据依赖关系,x为正整数;所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述循环bb包括指令一和指令二,所述三倍bb包括拷贝所述循环bb得到的:第一次指令一、第一次指令二、第二次指令一、第二次指令二、第三次指令一和第三次指令二;在所述三倍dag中指示有:所述第二次指令一依赖于所述第一次指令二,所述第三次指令一依赖于所述第二次指令二;所述候选调度窗口中包括所述第二次指令一和所述第二次指令二;
8.根据权利要求2至7任一所述的方法,其特征在于,所述方法还包括:
9.根据权利要求8所述的方法,其特征在于,所述根据所述循环bb中的指令总数确定所述调度窗口的偏移步长,包括:
10.一种编译装置,其特征在于,所述装置包括:
11.根据权利要求10所述的装置,其特征在于,所述调度模块,用于重复执行以下步骤遍历全部候选偏移位置:
12.根据权利要求11所述的装置,其特征在于,所述调度模块,用于根据所述调度结果计算所述候选调度窗口对应的最大发射时间;
13.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至9任一所述的编译方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至9任一所述的编译方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至9任一所述的编译方法。
