【技术实现步骤摘要】
自动化编译的系统和方法
[0001]本申请涉及编译器,尤其涉及自动优化编译器。
技术介绍
[0002]编译器将通常用高级编程语言(例如C、C
++
、Java
TM
等)编写的软件程序的源代码转换 为目标代码(例如,机器代码语言或寄存器传输语言(register transfer language,简称RTL) 中的指令序列。目标代码可以链接到一个或多个库以生成可执行文件,该可执行文件可以由 具有特定架构的处理器(例如,由计算设备的处理器)读取和执行,以执行在源代码中编程 的操作。编译器可以为不同的处理器生成不同的可执行文件。可以优化编译过程(例如,将 软件程序的源代码转换为目标代码(并最终转换为可执行文件)),以使所得的可执行文件在 执行时以所需的性能或效率水平在特定处理器上执行。
[0003]在编译期间优化软件程序的源代码是一项复杂而具有挑战性的工作,通常需要由人类专 家对源代码和/或目标代码进行密集的人工分析。要达到所需的性能水平可能很困难。这是因 为人类专家需要花费大量的时间和精力对源代码和/或目标代码进行人工分析,以便确定编译 器将源代码转换为目标代码(并最终转换为可在特定处理器上执行的可执行文件)的优选优 化方案。此外,由于人类专家对优化方案的选择取决于人类专家的主观判断和偏见,因此未 必能得到最优的优化方案。由于可用于执行可执行文件的不同类型的处理器,例如中央处理器(central processing unit,简称CPU)、图形处理器(graphics pro ...
【技术保护点】
【技术特征摘要】
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所述的系统,其特征在于,所述与所述第一可执行文件的所述执行性能有关的所述动态数据包括与所述第一可执行文件在特定处理器模拟器...
【专利技术属性】
技术研发人员:高耀清,钟璇,吴芃,龙晨,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。