自动化编译的系统和方法技术方案

技术编号:37595650 阅读:9 留言:0更新日期:2023-05-18 11:41
提供了用于自动调整和编译源代码的系统和方法。根据第一优化方案通过编译所述源代码生成第一可执行文件。为所述第一可执行文件生成编译报告、性能报告和瓶颈信息。生成第二优化方案,并根据所述第二优化方案通过编译所述源代码生成第二可执行文件。基于所述第一可执行文件和所述第二可执行文件输出优化后的可执行文件。执行文件。执行文件。

【技术实现步骤摘要】
自动化编译的系统和方法


[0001]本申请涉及编译器,尤其涉及自动优化编译器。

技术介绍

[0002]编译器将通常用高级编程语言(例如C、C
++
、Java
TM
等)编写的软件程序的源代码转换 为目标代码(例如,机器代码语言或寄存器传输语言(register transfer language,简称RTL) 中的指令序列。目标代码可以链接到一个或多个库以生成可执行文件,该可执行文件可以由 具有特定架构的处理器(例如,由计算设备的处理器)读取和执行,以执行在源代码中编程 的操作。编译器可以为不同的处理器生成不同的可执行文件。可以优化编译过程(例如,将 软件程序的源代码转换为目标代码(并最终转换为可执行文件)),以使所得的可执行文件在 执行时以所需的性能或效率水平在特定处理器上执行。
[0003]在编译期间优化软件程序的源代码是一项复杂而具有挑战性的工作,通常需要由人类专 家对源代码和/或目标代码进行密集的人工分析。要达到所需的性能水平可能很困难。这是因 为人类专家需要花费大量的时间和精力对源代码和/或目标代码进行人工分析,以便确定编译 器将源代码转换为目标代码(并最终转换为可在特定处理器上执行的可执行文件)的优选优 化方案。此外,由于人类专家对优化方案的选择取决于人类专家的主观判断和偏见,因此未 必能得到最优的优化方案。由于可用于执行可执行文件的不同类型的处理器,例如中央处理器(central processing unit,简称CPU)、图形处理器(graphics processing unit,简称GPU)、 数字信号处理器(digital signal processor,简称DSP)、机器学习集成电路(integrated circuit,简称IC)、现场可编程门阵列(field programmable gate array,简称FPGA)等,越来越多, 且具有专有的架构,即使是专家也可能对其不熟悉,这使得人类专家对源代码和/或目标代码 的人工分析越来越难以保证编译器生成的可执行文件具有所需水平的性能,从而使这个问题 变得更加严重。

技术实现思路

[0004]根据一方面,提供了一种自动调整和编译源代码的方法,所述方法包括:在计算设备处 接收源代码;根据第一优化方案通过编译所述源代码生成第一可执行文件;在所述计算设备 处生成包括与所述第一优化方案有关的数据的编译报告;在所述计算设备处生成性能报告,所述性能报告包括与所述第一可执行文件的执行性能有关的动态数据;在所述计算设备处接 收指示与所述第一可执行文件的所述执行性能相关联的一个或多个性能瓶颈的性能瓶颈信息; 在所述计算设备处,至少根据所述编译报告、所述性能报告和所述性能瓶颈信息生成第二优 化方案;根据所述第二优化方案,通过编译所述源代码在计算设备处生成第二可执行文件;以及计算设备根据所述第一可执行文件和所述第二可执行文件,输出优化后的可执行文件。
[0005]在任一前述实施例中,所述方法还包括:在生成所述第一可执行文件之前,识别与所述 源代码相关联的一个或多个性能参数。
[0006]在任一前述实施例中,所述第二优化方案中至少一个性能参数的值与所述第一优化方案 中所述至少一个性能参数的值不同。
[0007]在任一前述实施例中,所述生成所述第二优化方案包括:机器学习模块基于所述编译报 告和所述性能报告中的至少一个确定所述第二优化方案。
[0008]在任一前述实施例中,所述输出所述优化后的可执行文件包括:确定与所述第二可执行 文件的执行性能有关的动态数据在性能指标方面是否优于与所述第一可执行文件的所述执行 性能有关的所述动态数据。
[0009]在任一前述实施例中,所述编译报告包括以下至少一项:编译器对所述源代码执行的一 个或多个转换的标识;以及对于由所述编译器执行的所述一个或多个转换中的每一个,在所 述源代码中执行相应转换的相应位置。
[0010]在任一前述实施例中,所述与所述第一可执行文件的所述执行性能有关的所述动态数据 包括与所述第一可执行文件在特定处理器模拟器上的模拟执行性能有关的动态数据和与所述 第一可执行文件在所述特定处理器上的执行性能有关的动态数据中的一个或多个。
[0011]在任一前述实施例中,所述动态数据包括跟踪信息中的一个或多个,所述跟踪信息包括 机器周期、停顿、缓存未命中、分支预测未命中、内存跟踪数据、寄存器计数、流水线停顿、 内存访问计数、性能指标、周期精度数据、和内存寄存器信息中的一个或多个。
[0012]在任一前述实施例中,所述方法还包括:将所述源代码、所述编译报告、所述第一可执 行文件、所述第二可执行文件和所述动态数据中的一个或多个传输到数据存储。
[0013]在任一前述实施例中,所述方法还包括通过以下方式确定所述第二优化方案:利用机器 学习单元,基于与至少一个前一次执行的可执行文件相关联的动态数据、所述前一次执行的 可执行文件中的编译报告、所述第一可执行文件的所述性能报告和所述第一可执行文件的所述编译报告,生成输出优化建议的映射函数。
[0014]在任一前述实施例中,选择所述第二优化方案包括:生成包含多个优化方案的搜索空间; 以及基于在所述搜索空间上执行搜索策略,确定所述第二优化方案。
[0015]根据另一方面,提供了一种计算系统,包括:至少一个处理器;以及存储器,其上存储 有计算机可执行指令,当由所述至少一个处理器执行时使得所述至少一个处理器执行自动调 整和编译源代码的方法,所述方法包括:响应于接收源代码,根据第一优化方案通过编译所述源代码生成第一可执行文件;生成包括与所述第一优化方案有关的数据的编译报告;生成 包括与所述第一可执行文件的执行性能有关的动态数据的性能报告;接收指示与所述第一可 执行文件的所述执行性能相关联的一个或多个性能瓶颈的性能瓶颈信息;至少基于所述编译 报告、所述性能报告和所述性能瓶颈信息生成第二优化方案;根据所述第二优化方案对所述源代码进行编译生成第二可执行文件;以及基于所述第一可执行文件和所述第二可执行文件, 输出优化后的可执行文件。
[0016]在任一前述实施例中,所述方法还包括:在生成所述第一可执行文件之前,识别与所述 源代码相关联的一个或多个性能参数。
[0017]在任一前述实施例中,所述第二优化方案中至少一个性能参数的值与所述第一优化方案 中所述至少一个性能参数的值不同。
[0018]在任一前述实施例中,所述生成所述第二优化方案包括:通过映射函数基于所述
编译报 告和所述性能报告中的至少一个确定所述第二优化方案。
[0019]在任一前述实施例中,所述输出所述优化后的可执行文件包括:确定与所述第二可执行 文件的执行性能有关的动态数据在性能指标方面是否优于与所述第一可执行文件的所述执行 性能有关的所述动态数据。
[0020]在任一前述实施例中,所述编译报告包括以下至少一项:编译器对所述源代码执行的一 个或多个转换的标识;以及对于由所述编译器执行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种自动调整和编译源代码的方法,其特征在于,所述方法包括:接收源代码;根据第一优化方案通过编译所述源代码生成第一可执行文件;生成包括与所述第一优化方案有关的数据的编译报告;生成性能报告,所述性能报告包括与所述第一可执行文件的执行性能有关的动态数据;接收指示与所述第一可执行文件的所述执行性能相关联的一个或多个性能瓶颈的性能瓶颈信息;基于所述编译报告、所述性能报告和所述性能瓶颈信息生成第二优化方案;根据所述第二优化方案,通过编译所述源代码生成第二可执行文件;以及根据所述第一可执行文件和所述第二可执行文件,输出优化后的可执行文件。2.根据权利要求1所述的方法,其特征在于,还包括:在生成所述第一可执行文件之前,识别与所述源代码相关联的一个或多个性能参数。3.根据权利要求2所述的方法,其特征在于,所述第二优化方案中至少一个性能参数的值与所述第一优化方案中所述至少一个性能参数的值不同。4.根据权利要求1所述的方法,其特征在于,所述输出所述优化后的可执行文件包括:确定与所述第二可执行文件的执行性能有关的动态数据在性能指标方面是否优于与所述第一可执行文件的所述执行性能有关的所述动态数据。5.根据权利要求1所述的方法,其特征在于,所述编译报告包括以下至少一项:编译器对所述源代码执行的一个或多个转换的标识;以及对于由所述编译器执行的所述一个或多个转换中的每一个,在所述源代码中执行相应转换的相应位置。6.根据权利要求1所述的方法,其特征在于,所述与所述第一可执行文件的所述执行性能有关的所述动态数据包括与所述第一可执行文件在特定处理器模拟器上的模拟执行性能有关的动态数据和与所述第一可执行文件在所述特定处理器上的执行性能有关的动态数据中的一个或多个。7.根据权利要求1所述的方法,其特征在于,所述动态数据包括跟踪信息中的一个或多个,所述跟踪信息包括机器周期、停顿、缓存未命中、分支预测未命中、内存跟踪数据、寄存器计数、流水线停顿、内存访问计数、性能指标、周期精度数据、和内存寄存器信息中的一个或多个。8.根据权利要求1所述的方法,其特征在于,还包括:将所述源代码、所述编译报告、所述第一可执行文件、所述第二可执行文件和所述动态数据中的一个或多个传输到数据存储。9.根据权利要求11所述的方法,其特征在于,选择所述第二优化方案包括:生成包含多个优化方案的搜索空间;以及基于在所述搜索空间上执行搜索策略,确定所述第二优化方案。10.一种计算系统,其特征在于,包括:至少一个处理器;以及存储器,其上存储有计算机可执行指令,当由所述至少一个处理器执行时使得所述至
少一个处理器执行自动调整和编译源代码的方法,所述方法包括:接收源代码,根据第一优化方案通过编译所述源代码生成第一可执行文件;生成包括与所述第一优化方案有关的数据的编译报告;生成包括与所述第一可执行文件的执行性能有关的动态数据的性能报告;接收指示与所述第一可执行文件的所述执行性能相关联的一个或多个性能瓶颈的性能瓶颈信息;至少基于所述编译报告、所述性能报告和所述性能瓶颈信息生成第二优化方案;根据所述第二优化方案对所述源代码进行编译生成第二可执行文件;以及基于所述第一可执行文件和所述第二可执行文件,输出优化后的可执行文件。11.根据权利要求10所述的系统,其特征在于,所述方法还包括:在生成所述第一可执行文件之前,识别与所述源代码相关联的一个或多个性能参数。12.根据权利要求11所述的系统,其特征在于,所述第二优化方案中至少一个性能参数的值与所述第一优化方案中所述至少一个性能参数的值不同。13.根据权利要求10所述的系统,其特征在于,所述生成所述第二优化方案包括:通过映射函数基于所述编译报告和所述性能报告中的至少一个确定所述第二优化方案。14.根据权利要求13所述的系统,其特征在于,所述输出所述优化后的可执行文件包括:确定与所述第二可执行文件的执行性能有关的动态数据在性能指标方面是否优于与所述第一可执行文件的所述执行性能有关的所述动态数据。15.根据权利要求10所述的系统,其特征在于,所述编译报告包括以下至少一项:器对所述源代码执行的一个或多个转换的标识;以及对于由所述编译器执行的所述一个或多个转换中的每一个,在所述源代码中执行相应转换的相应位置。16.根据权利要求10所述的系统,其特征在于,所述与所述第一可执行文件的所述执行性能有关的所述动态数据包括与所述第一可执行文件在特定处理器模拟器...

【专利技术属性】
技术研发人员:高耀清钟璇吴芃龙晨
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1