指令编译优化方法、装置、设备及存储介质与流程
本公开涉及代码编译,尤其涉及一种指令编译优化方法、装置、设备及存储介质。
背景技术:
1、随着图形处理器(graphics processing unit,gpu)在人工智能计算、高性能计算和图形处理等领域的应用,越来越多的计算任务通过gpu内核函数执行。gpu内核函数通常采用单指令多线程(single instruction multiple thread,simt)或单指令多数据(single instruction multiple data,simd)执行架构,同一线程束中的多个通道可以并行执行相同的指令。对于某些计算过程,虽然指令由多个通道执行,但各通道所使用的输入值或计算得到的输出值相同,该类值可以称为统一(uniform)值;与之相对,各通道的取值可能不同的值可以称为发散(divergent)值。
2、在现有的gpu编译流程中,编译器通常会在中间表示(intermediaterepresentation,ir)阶段对内核(kernel)函数进行分析,判断中间表示阶段代码中的部分值或指令是否具有统一性。随后,编译器对中间表示阶段代码进行指令选择,将中间表示阶段代码转换为机器指令,并在寄存器分配之前的机器中间表示(mid-level intermediaterepresentation,mir)阶段对机器指令进行进一步处理。
3、然而,现有的统一性分析通常针对单个值或单条指令进行。当多个统一指令构成连续的计算过程时,这些统一指令会产生冗余计算,造成计算资源的浪费,内核函数的执行效率下降,指令编译优化的效率和准确性降低。
技术实现思路
1、为解决上述相关技术中存在的问题,本公开提供了一种指令编译优化方法、装置、设备及存储介质。
2、本公开的第一方面提供了一种指令编译优化方法,包括:
3、在对内核函数进行编译的中间表示阶段,对内核函数的中间表示阶段代码进行统一性分析,将中间表示阶段代码中的多个候选统一指令聚合为至少一个统一计算子图;
4、生成承载统一计算子图的常量计算单元,并将中间表示阶段代码中属于统一计算子图的指令替换为目标指令,得到目标代码,其中,目标指令包括对常量计算单元的输出数据的读取指令;
5、在指令选择完成后且寄存器分配开始前的机器中间表示阶段,对目标代码对应的机器指令进行统一性分析,将输出值为统一值的机器指令确定为统一机器指令;
6、确定引用统一机器指令的输出值的各目标机器指令,对各目标机器指令进行编译优化,得到内核函数的目标编译优化结果。
7、本公开的第二方面提供了一种指令编译优化装置,包括:
8、第一分析模块,用于在对内核函数进行编译的中间表示阶段,对内核函数的中间表示阶段代码进行统一性分析,将中间表示阶段代码中的多个候选统一指令聚合为至少一个统一计算子图;
9、替换模块,用于生成承载统一计算子图的常量计算单元,并将中间表示阶段代码中属于统一计算子图的指令替换为目标指令,得到目标代码,其中,目标指令包括对常量计算单元的输出数据的读取指令;
10、第二分析模块,用于在指令选择完成后且寄存器分配开始前的机器中间表示阶段,对目标代码对应的机器指令进行统一性分析,将输出值为统一值的机器指令确定为统一机器指令;
11、优化模块,用于确定引用统一机器指令的输出值的各目标机器指令,对各目标机器指令进行编译优化,得到内核函数的目标编译优化结果。
12、本公开的第三方面提供了一种计算机设备,包括存储器和处理器,其中,存储器中存储有计算机程序,当计算机程序被处理器执行时,实现上述第一方面的指令编译优化方法。
13、本公开的第四方面提供了一种计算机可读存储介质,存储介质中存储有计算机程序,当计算机程序被处理器执行时,实现上述第一方面的指令编译优化方法。
14、本公开提供的技术方案与相关技术相比具有如下有益效果:
15、本公开实施例中,通过将多个候选统一指令聚合为统一计算子图,并利用常量计算单元集中承载统一计算子图,使原中间表示阶段代码通过读取常量计算单元的输出数据获得相应计算结果,从而实现统一计算的集中处理和计算结果复用,有利于减少统一计算的重复执行。同时,在指令选择完成后且寄存器分配开始前再次对机器指令进行统一性分析,可以在机器指令层面进一步确认统一机器指令及其输出值的引用关系,并针对引用输出值的目标机器指令进行编译优化,从而提高指令编译优化的准确性和效率,减少了冗余计算量,节省了计算资源,提高了内核函数的执行效率。
16、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
1.一种指令编译优化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述内核函数的中间表示阶段代码进行统一性分析,将所述中间表示阶段代码中的多个候选统一指令聚合为至少一个统一计算子图,包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述静态单赋值进行统一性分类,得到所述静态单赋值的统一性分类结果,包括:
4.根据权利要求1所述的方法,其特征在于,所述将所述中间表示阶段代码中的多个所述候选统一指令聚合为至少一个统一计算子图,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于各所述目标统一指令之间的定义使用关系,将多个所述目标统一指令聚合为至少一个统一计算子图,包括:
6.根据权利要求1所述的方法,其特征在于,所述生成承载所述统一计算子图的常量计算单元,包括:
7.根据权利要求1所述的方法,其特征在于,所述生成承载所述统一计算子图的常量计算单元,并将所述中间表示阶段代码中属于所述统一计算子图的指令替换为目标指令,得到目标代码,包括:
8.根据权利要求7所述的方法,其特征在于,所述预设语义安全条件包括下列安全条件中的至少一种:
9.根据权利要求1所述的方法,其特征在于,所述对各所述目标机器指令进行编译优化,得到所述内核函数的目标编译优化结果,包括:
10.根据权利要求9所述的方法,其特征在于,所述将各所述目标机器指令中引用所述统一机器指令的输出值的向量寄存器操作数替换为标量寄存器操作数,包括:
11.根据权利要求9所述的方法,其特征在于,所述确定所述初始编译优化结果相对于所述中间表示阶段代码的优化收益值,包括:
12.根据权利要求9所述的方法,其特征在于,所述预设回退方式包括以下回退方式中的至少一种:
13.根据权利要求9所述的方法,其特征在于,所述预设回退条件包括下列回退条件中的至少一种:
14.根据权利要求1-13中任一项所述的方法,其特征在于,所述得到所述内核函数的目标编译优化结果之后,所述方法还包括:
15.一种指令编译优化装置,其特征在于,包括:
16.一种计算机设备,其特征在于,包括:
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-14中任一项所述的指令编译优化方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com