编译器优化方法、系统和存储介质技术方案

技术编号:33805800 阅读:21 留言:0更新日期:2022-06-16 10:13
本公开提供了一种编译器优化方法、系统和存储介质,该方法包括获取通过使用编译器编译计算机程序而生成的中间代码和可执行代码;基于通过在运行时系统执行可执行代码而获取的一个或多个轨迹来确定奖励;基于中间代码和一个或多个轨迹生成嵌入向量,以表示代码执行状态;使用强化学习代理,基于嵌入向量和奖励来确定一个或多个优化动作;以及通过应用一个或多个优化动作来更新编译器。本公开提高了编译器的优化效率和灵活性。器的优化效率和灵活性。器的优化效率和灵活性。

【技术实现步骤摘要】
platform)、或反馈驱动的优化编译器框架(feedback

driven optimization compiler framework)。
[0011]在一些实施例中,所述一个或多个轨迹中的每个轨迹包括一个或多个指标(metric),一个或多个指标包括以下至少一个:平均指令执行周期数(cycles per instruction,CPI)、执行时间、或平均累积指令的未命中数(miss per accruing instruction)。
[0012]在一些实施例中,获取中间代码和可执行代码包括:基于计算机程序生成中间代码;获取中间代码的树表示(tree representation);以及通过优化树表示来生成可执行代码。
[0013]在一些实施例中,获取中间代码和可执行代码包括:在编译器编译计算机程序后获得中间代码和可执行代码,且该方法还包括:触发被更新的编译器重新编译计算机程序。
[0014]在一些实施例中,计算机程序包括多个部分,且获取中间代码和可执行代码包括:通过由编译器编译计算机程序的第一部分来获得中间代码和可执行代码,且该方法还包括:用被更新的编译器编译计算机程序的第二部分。
[0015]在一些实施例中,强化学习代理训练用于推荐优化动作的优化策略,该方法还包括:从被更新的编译器获取新的可执行代码;通过在运行时系统中运行新的可执行代码获取一个或多个新的轨迹和新的奖励;并根据新的奖励和一个或多个优化动作训练优化策略。
[0016]根据另一些实施例,系统包括一个或多个处理器以及耦合到该一个或多个处理器的一个或多个计算机可读存储器,且该一个或多个计算机可读存储器具有存储在其上的指令,所述指令可由该一个或多个处理器执行以执行上述任何实施例的方法。
[0017]根据另一些实施例,非瞬时性计算机可读存储介质配置有可由一个或多个处理器执行的指令,以使该一个或多个处理器执行上述任何实施例的方法。
[0018]根据另一方面,AI辅助编译器的系统可包括一个或多个处理器以及耦合到该一个或多个处理器的一个或多个非瞬时性计算机可读存储器,该一个或多个非瞬时性计算机可读存储器存储指令,当由该一个或多个处理器执行指令时,使得系统执行以下操作:获取通过使用编译器编译计算机程序而生成的中间代码和可执行代码;基于在运行时系统中执行可执行代码而获得的一个或多个轨迹来确定奖励;基于中间代码和一个或多个轨迹生成嵌入向量,以表示代码执行状态;使用强化学习代理,基于嵌入向量和奖励确定一个或多个优化动作;以及通过应用一个或多个优化动作来更新编译器。
[0019]根据又一方面,非瞬时性计算机可读存储介质可以存储指令,当由一个或多个处理器执行指令时,使得该一个或多个处理器执行以下操作:获取通过使用编译器编译计算机程序而生成的中间代码和可执行代码;基于在运行时系统中执行可执行代码而获得的一个或多个轨迹来确定奖励;基于中间代码和一个或多个轨迹生成嵌入向量,以表示代码执行状态;使用强化学习代理,基于嵌入向量和奖励确定一个或多个优化动作;以及通过应用一个或多个优化动作来更新编译器。
[0020]本说明书中公开的实施例具有一个或多个技术效果。在一些实施例中,所述用于优化AI辅助编译器的方法和系统可以是平台无关的(例如,跨不同平台)。例如,AI辅助编译器可以在虚拟机(例如,Java虚拟机(Java virtual machine,JVM))、在物理机上运行的反
馈定向优化(feedback directed optimization,FDO)编译器框架、或另一适当环境中实现。在一些实施例中,基于强化学习(reinforcement learning,RL)学习对编译器的改进,该强化学习无缝地适合于编译器优化场景。例如,所述编译器优化涉及从来自运行由编译器生成的可执行代码的环境的定期反馈中学习并相应地优化编译器的迭代过程。类似地,RL框架中的RL代理可以与环境相互作用并基于环境的状态和反馈/奖励调整其动作和/或奖励策略,以及推荐优化动作。在一些实施例中,编译器公开多个接口,通过该多个接口中一个或多个接口,其与RL代理相互作用以执行推荐的优化动作。与只允许有限数量的控制编译算法的开/关标志的传统编译器相比,AI辅助编译器可以为RL代理暴露(expose)接口,以自动优化编译器。这种灵活性使AI辅助编译器更加动态,且实现更好的编译结果。在一些实施例中,在AI辅助编译器的训练过程中,来自运行可执行代码的环境的各种奖励可以被考虑在内。不同的奖励可以表明不同的优化焦点。例如,一些奖励(例如,基于平均指令执行周期数(CPI)的奖励)关注于改善执行时间,而其他奖励(例如,当可执行代码需要通过网络连接传输或部署在空间有限的边缘设备(edge device)中时)关注于生成的代码大小。因此,AI辅助编译器可以被配置为实现不同的优化目标。
附图说明
[0021]在参照附图考虑到下文描述和权利要求书后,本文公开的系统、方法和非瞬时性计算机可读介质的以上和其他特征,以及结构的相关元件的操作方法和功能,部件的组合以及批量生产的经济性将变得更加明显。所有附图都构成本说明书的一部分,其中类似参考编号在各种附图中指定相应的部分。然而,应明确地理解,附图仅用于说明和描述的目的,并不旨在作为本公开的界限的定义。
[0022]图1示出根据本公开实施例的示例环境,AI辅助编译器可以应用在该环境中。
[0023]图2示出根据本公开实施例的示例AI辅助编译器。
[0024]图3示出根据本公开实施例的使用AI辅助编译器编译计算机程序的示例工作流。
[0025]图4示出根据本公开实施例的使用AI辅助编译器编译计算机程序的示例方法。
[0026]图5示出根据本公开实施例的AI辅助编译器的示例方法。
[0027]图6示出根据本公开实施例的AI辅助编译器的计算机设备的框图。
[0028]图7示出计算机系统的示例框图,本文所述的任何实施例可以在该计算机系统中实现。
具体实施例
[0029]本说明书旨在使本领域任何技术人员能够制造和使用实施例,并在特定应用及其要求的上下文中提供本说明书。对于本领域技术人员来说,对本公开实施例的各种修改是显而易见的,并且本文定义的通用原理可以应用于其他实施例和应用,而不脱离本说明书的精神和范围。因此,说明书不限于所示的实施例,而是被赋予与本文公开的原理和特征一致的最广泛的范围。
[0030]为了解决当前技术方案的这些缺点,本说明书描述了一种AI辅助编译器,其采用强化学习框架来学习计算机程序编译的底层模式,并相应地优化编译器。编译器优化在无需更改原始的高级源代码的情况下提高了生成的可执行代码的质量。例如,当应用该优化
时,由被优化的编译器生成的代码可以在目标运行时运行得更快或更高效。本文所述的实施例涉及在编译器优化中应用强化学习(RL)。RL是受行为主义心理学启发的机器学习领域,且使用奖励或惩罚的概念,以便软件代理与环境相互作用且最大化其累积奖励。RL中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译器优化方法,包括:获取通过使用编译器编译计算机程序而生成的中间代码和可执行代码;基于通过在运行时系统中执行所述可执行代码而获取的一个或多个轨迹来确定奖励;基于所述中间代码和所述一个或多个轨迹生成嵌入向量,以表示代码执行状态;使用强化学习代理,基于所述嵌入向量和所述奖励来确定一个或多个优化动作;以及通过应用所述一个或多个优化动作来更新所述编译器。2.根据权利要求1所述的编译器优化方法,其中,所述编译器包括多个接口,且更新所述编译器包括:触发所述多个接口中的一个或多个接口,以将所述一个或多个优化动作应用到所述编译器。3.根据权利要求1所述的编译器优化方法,其中,基于所述中间代码和所述一个或多个轨迹生成所述嵌入向量包括:生成表示所述中间代码的图;通过图神经网络基于所述图学习代码依赖;以及基于所述代码依赖和所述一个或多个轨迹生成所述嵌入向量,以表示代码执行状态;其中,基于所述代码依赖和所述一个或多个轨迹生成所述嵌入向量包括:基于所述代码依赖和所述一个或多个轨迹,生成一个或多个序列向量;将所述一个或多个序列向量输入序列模型,以生成所述嵌入向量。4.根据权利要求1所述的编译器优化方法,其中,所述运行时系统被在以下至少一个目标中实现:具有操作系统的计算设备、虚拟机、云本地编译器即服务的平台、或反馈驱动的优化编译器框架。5.根据权利要求1所述的编译器优化方法,其中,所述一个或多个轨迹中的每个轨迹包括一个或多个指标,所述一个或多个指标包括以下至少一个:平均指令执行周期数、执行时间、或平均累积指令的未命中数。6.根据权利要求1所述的编译器优化方法,其中,获取所述中间代码和所述可执行代码包括:基于所述计算机程序生成所述中间代码;获取所述中间代码的树表示;以及通过优化所述树表示生成所述可执行代码。7.根据权利要求1所述的编译器优化方法,其中,所述计算机程序包括多个部分,获取所述中间代码和所述可执行代码包括:通过由所述编译器编译所述计算机程序的第一部分,获取所述中间代码和所述可执行代码;以及所述方法还包括:使用被更新的编译器编译所述计算机程序的第二部分。8.根据权利要求1所述的编译器优化方法,其中,所述强化学习代理训练用于推荐优化动作的优化策略,所述方法还包括:从被更新的编译器获取新的可执行代码;通过在所述运行时系统中运行所述新的可执行代码,获取一个或多个新的轨迹和新的
奖励;以及基于所述新的奖励和所述一个或多个优化动作,训练所述优化策略。9.一种编译器优化系统,所述编译器优化系统包括一个或多个处理器以及耦合到所述一个或多个处理器的一个或多个非瞬时性计算机可读存储器,所述一个或多个非瞬时性计算机可读存储器存储指令,当所述一个或多个处理器执行...

【专利技术属性】
技术研发人员:方元炜陈彦光
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1