代码的中间表示优化方法、装置及相关设备与流程
本技术涉及计算机,尤其涉及一种代码的中间表示优化方法、装置及相关设备。
背景技术:
1、用户开发的源代码,如基于java语言、或者c语言编程的代码等,通常会被编译成中间表示(intermediate representation,ir),并根据运行代码的硬件所支持的指令集以及架构等特点,将ir编译成计算机可执行代码,如汇编语言的代码、或者机器语言的代码等。其中,ir,是一种介于源代码与计算机可执行代码之间的代码抽象表示,可以包括算子序列,该算子序列中的多个算子可以被依次执行。
2、在高性能计算(high performance computing,hpc)以及人工智能(artificialintelligence,ai)等领域,通常可以采用编译优化技术,在保持语义基本不变的情况下,对ir进行优化,以提高最终基于ir所编译得到的计算机可执行代码在硬件上的执行性能,如提高代码的执行效率等。
3、目前,通常是由用户针对ir中的各个算子分别定义相应的优化策略,并由用户指定优化ir所采用的多个优化策略的执行顺序,从而编译器可以根据用户所指定的执行顺序,利用该多个优化策略依次对ir进行优化,具体是利用该多个优化策略依次对ir中的各个算子的代码进行优化。但是,实际应用场景中,基于优化后的ir所最终编译得到的计算机可执行代码,在硬件上的执行性能仍然较差。
技术实现思路
1、本技术提供了一种代码的中间表示优化方法,以提高基于优化后的中间表示所最终编译得到的计算机可执行代码在硬件上的执行性能。此外,本技术还提供了对应的优化装置、计算设备、计算机可读存储介质以及计算机程序产品。
2、第一方面,本技术提供一种代码的中间表示优化方法,该方法可以由相应地用于优化代码的中间表示的优化装置执行。具体地,优化装置获取第一中间表示,该第一中间表示包括多个算子,该多个算子可以是第一中间表示中的全部算子,也可以是第一中间表示中的部分算子。然后,优化装置可以根据优化条件对多个算子进行优化策略搜索,得到第一优化策略序列以及优化参数,其中,第一优化策略序列包括依次对该多个算子的代码进行转换的多个第一优化策略,该多个第一优化策略用于优化多个算子在硬件环境上执行时的性能,优化参数包括多个第一优化策略中的每个第一优化策略中的参数。并且,第一优化策略序列以及优化参数针对第一中间表示所产生的性能优化结果满足优化条件。比如,第一优化策略序列以及优化参数针对第一中间表示所产生的优化性能,高于其他优化策略序列或者第一优化策略序列中的优化策略的其他参数取值针对第一中间表示所产生的优化性能等。最后,优化装置可以根据第一优化策略序列以及优化参数,对第一中间表示中多个算子的代码进行转换,得到第二中间表示。
3、由于在对第一中间表示进行优化的过程中,是根据针对第一中间表示所产生的性能优化结果,为第一中间表示中的多个算子搜索优化策略序列以及优化参数,而并非是基于用户指定的顺序或者默认的顺序(如算子的执行顺序)利用多个优化策略依次对第一中间表示进行优化,这使得基于搜索出的优化策略序列以及优化参数对第一中间表示中的多个算子的代码进行转换并得到第二中间表示,能够使得基于该第二中间表示所编译生成的计算机可执行代码在硬件环境上的性能达到较高水平。
4、在一种可能的实施方式中,优化装置在根据优化条件对多个算子进行优化策略搜索,得到第一优化策略序列以及优化参数时,具体可以是先获取描述文件,描述文件用于记录多个优化策略中的每个优化策略的输入算子以及输出算子,输入算子为优化策略支持转换的算子,输出算子为利用优化策略转换得到的算子;然后,优化装置可以根据描述文件,从多个优化策略中确定多个算子分别对应的候选优化策略,并根据多个算子分别对应的候选优化策略,确定组合空间,组合空间包括多种候选优化策略序列,多种候选优化策略序列中的每种候选优化策略序列包括依次对多个算子的代码进行转换的多个候选优化策略,不同候选优化策略序列之间的候选优化策略不同或者候选优化策略的执行顺序不同;从而,优化装置可以根据优化条件从组合空间进行优化策略搜索,得到第一优化策略序列以及优化参数。如此,优化装置可以根据描述文件确定针对第一ir中的多个算子进行优化所可能采用的多个候选优化策略,并以此确定组合空间,从而优化装置可以从确定的组合空间中为该多个算子确定能够提高中间表示性能优化效果的优化策略序列以及优化参数,以此实现提高基于优化后的中间表示所生成的计算机可执行代码在硬件环境上的性能。
5、在一种可能的实施方式中,描述文件还用于记录不同优化策略之间的优化顺序,从而优化装置在根据多个算子分别对应的候选优化策略,确定组合空间时,具体可以是根据不同优化策略之间的优化顺序以及多个算子分别对应的候选优化策略,确定组合空间。如此,通过描述文件定义不同优化策略之间优化顺序,可以过滤组合空间中不满足该优化顺序的候选优化策略序列,实现对组合空间的剪枝,以此可以有效减少组合空间所包括的候选优化策略序列的数量,从而可以减少后续从组合空间中搜索出第一优化策略序列以及优化参数所需的计算量,提高计算效率。
6、在一种可能的实施方式中,不同优化策略之间的优化顺序,包括多个分组之间的排序,多个分组中的每个分组包括至少一个优化策略。如此,利用多个分组之间的执行顺序来指示该多个优化策略之间的执行顺序,以此实现对组合空间的有效剪枝,从而可以减少后续从组合空间中搜索出第一优化策略序列以及优化参数所需的计算量,提高计算效率。
7、在一种可能的实施方式中,优化装置在根据优化条件从组合空间进行优化策略搜索,得到第一优化策略序列以及优化参数时,具体可以是确定第一集合,第一集合包括组合空间中的至少一种候选优化策略序列,并为第一集合中的每种候选优化策略序列分别确定至少一种参数组合,至少一种参数组合中的每种参数组合为候选优化策略序列包括的多个候选优化策略中的一种参数取值;然后,优化装置可以利用人工智能ai模型,预测每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,并根据优化条件以及每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,确定第一优化策略序列以及优化参数。如此,通过ai模型预测的方式确定性能优化结果,而可以不用在真实的硬件环境上运行计算机可执行代码以得到性能优化结果,这能够有效提高优化装置获取性能优化结果的效率。
8、在一种可能的实施方式中,优化装置在根据优化条件以及每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,确定第一优化策略序列以及优化参数时,具体可以是基于每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,确定第一候选优化策略序列以及第一候选优化策略序列所采用的第一参数组合,第一候选优化策略序列采用第一参数组合针对第一中间表示所产生的性能优化结果优于其余候选优化策略序列采用参数组合针对第一中间表示所产生的性能优化结果;然后,优化装置利用第一候选优化策略序列以及第一参数组合,对第一中间表示中多个算子的代码进行转换,得到测试中间表示,并对测试中间表示进行编译,得到计算机可执行代码;从而,优化装置可以在硬件环境上执行计算机可执行代码,得到利用第一候选优化策略序列以及第一参数组合针对第一中间表示所产生的实际优化性能,并根据优化条件以及第一候选优化策略序列以及第一参数组合针对第一中间表示的实际优化性能,确定第一优化策略序列以及优化参数。如此,先利用ai模型预测较多数量的候选优化策略序列以及参数组合所产生的性能优化结果,再结合硬件环境为少量的候选优化策略序列及其所采用的参数组合验证其产生的性能优化结果,这不仅能够提高确定第一优化策略序列以及优化参数的整体效率,也能保证确定第一优化策略序列以及优化参数的准确性。
9、在一种可能的实施方式中,优化装置在根据优化条件以及第一候选优化策略序列以及第一参数组合针对第一中间表示的实际优化性能,确定第一优化策略序列以及优化参数时,具体可以是先根据第一候选优化策略序列以及第一参数组合针对第一中间表示的实际优化性能,确定第二集合,第二集合包括组合空间中的至少一种候选优化策略序列,第二集合与第一集合不存在重叠;然后,优化装置为第二集合中的每种候选优化策略序列分别确定至少一种参数组合,并利用ai模型,预测第二集合中的每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,从而优化装置可以根据优化条件以及第二集合中的每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果以及第一候选优化策略序列与第一参数组合针对第一中间表示的实际优化性能,确定第一优化策略序列以及优化参数。如此,优化装置可以通过迭代搜索的方式,从组合空间中确定出性能优化结果满足优化条件的第一优化策略序列以及优化参数,提高为第一中间表示确定优化策略序列以及优化参数的准确性。
10、第二方面,本技术提供一种代码的中间表示优化装置,装置包括:获取模块,用于获取第一中间表示,第一中间表示包括多个算子;搜索模块,用于根据优化,条件对多个算子进行优化策略搜索,得到第一优化策略序列以及优化参数,第一优化策略序列包括依次对多个算子的代码进行转换的多个第一优化策略,多个第一优化策略用于优化多个算子在硬件环境上执行时的性能,优化参数包括多个第一优化策略中的每个第一优化策略中的参数,第一优化策略序列以及优化参数针对第一中间表示所产生的性能优化结果满足优化条件;转换模块,用于根据第一优化策略序列以及优化参数,对第一中间表示中多个算子的代码进行转换,得到第二中间表示。
11、在一种可能的实施方式中,搜索模块,用于:获取描述文件,描述文件用于记录多个优化策略中的每个优化策略的输入算子以及输出算子,输入算子为优化策略支持转换的算子,输出算子为利用优化策略转换得到的算子;根据描述文件,从多个优化策略中确定多个算子分别对应的候选优化策略;根据多个算子分别对应的候选优化策略,确定组合空间,组合空间包括多种候选优化策略序列,多种候选优化策略序列中的每种候选优化策略序列包括依次对多个算子的代码进行转换的多个候选优化策略,不同候选优化策略序列之间的候选优化策略不同或者候选优化策略的执行顺序不同;根据优化条件从组合空间进行优化策略搜索,得到第一优化策略序列以及优化参数。
12、在一种可能的实施方式中,描述文件还用于记录不同优化策略之间的优化顺序;搜索模块,用于根据不同优化策略之间的优化顺序以及多个算子分别对应的候选优化策略,确定组合空间。
13、在一种可能的实施方式中,不同优化策略之间的优化顺序,包括多个分组之间的排序,多个分组中的每个分组包括至少一个优化策略。
14、在一种可能的实施方式中,搜索模块,用于:确定第一集合,第一集合包括组合空间中的至少一种候选优化策略序列;为第一集合中的每种候选优化策略序列分别确定至少一种参数组合,至少一种参数组合中的每种参数组合为候选优化策略序列包括的多个候选优化策略中的一种参数取值;利用人工智能ai模型,预测每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果;根据优化条件以及每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,确定第一优化策略序列以及优化参数。
15、在一种可能的实施方式中,搜索模块,用于:基于每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果,确定第一候选优化策略序列以及第一候选优化策略序列所采用的第一参数组合,第一候选优化策略序列采用第一参数组合针对第一中间表示所产生的性能优化结果优于其余候选优化策略序列采用参数组合针对第一中间表示所产生的性能优化结果;利用第一候选优化策略序列以及第一参数组合,对第一中间表示中多个算子的代码进行转换,得到测试中间表示;对测试中间表示进行编译,得到计算机可执行代码;在硬件环境上执行计算机可执行代码,得到利用第一候选优化策略序列以及第一参数组合针对第一中间表示所产生的实际优化性能;根据优化条件以及第一候选优化策略序列以及第一参数组合针对第一中间表示的实际优化性能,确定第一优化策略序列以及优化参数。
16、在一种可能的实施方式中,搜索模块,用于:根据第一候选优化策略序列以及第一参数组合针对第一中间表示的实际优化性能,确定第二集合,第二集合包括组合空间中的至少一种候选优化策略序列,第二集合与第一集合不存在重叠;为第二集合中的每种候选优化策略序列分别确定至少一种参数组合;利用ai模型,预测第二集合中的每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果;根据优化条件以及第二集合中的每种候选优化策略序列所采用的每种参数组合分别针对第一中间表示所产生的性能优化结果以及第一候选优化策略序列与第一参数组合针对第一中间表示的实际优化性能,确定第一优化策略序列以及优化参数。
17、第二方面提供的代码的中间表示优化的装置,对应于第一方面提供的代码的中间表示优化方法,故第二方面中任意一种实现方式所具有的技术效果,可参见上述第一方面中相应实现方式所具有的技术效果的相关之处描述,在此不做赘述。
18、第三方面,本技术提供一种计算设备,所述计算设备包括处理器、存储器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行存储器中存储的指令,以使得计算设备执行如第一方面或第一方面的任一种实现方式中的代码的中间表示优化方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。计算设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
19、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算设备上运行时,使得计算设备执行上述第一方面或第一方面的任一种实现方式所述的代码的中间表示优化方法的操作步骤。
20、第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面或第一方面的任一种实现方式所述的代码的中间表示优化方法的操作步骤。
21、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com