[发明专利]自动化编译的系统和方法有效
申请号: | 201880094867.4 | 申请日: | 2018-06-20 |
公开(公告)号: | CN112352219B | 公开(公告)日: | 2022-07-26 |
发明(设计)人: | 高耀青;钟璇;吴芃;龙晨 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N20/00 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 自动化 编译 系统 方法 | ||
提供了用于自动调整和编译源代码的系统和方法。根据第一优化方案通过编译所述源代码生成第一可执行文件。为所述第一可执行文件生成编译报告、性能报告和瓶颈信息。生成第二优化方案,并根据所述第二优化方案通过编译所述源代码生成第二可执行文件。基于所述第一可执行文件和所述第二可执行文件输出优化后的可执行文件。
技术领域
本申请涉及编译器,尤其涉及自动优化编译器。
背景技术
编译器将通常用高级编程语言(例如C、C++、JavaTM等)编写的软件程序的源代码转换为目标代码(例如,机器代码语言或寄存器传输语言(register transfer language,简称RTL)中的指令序列。目标代码可以链接到一个或多个库以生成可执行文件,该可执行文件可以由具有特定架构的处理器(例如,由计算设备的处理器)读取和执行,以执行在源代码中编程的操作。编译器可以为不同的处理器生成不同的可执行文件。可以优化编译过程(例如,将软件程序的源代码转换为目标代码(并最终转换为可执行文件)),以使所得的可执行文件在执行时以所需的性能或效率水平在特定处理器上执行。
在编译期间优化软件程序的源代码是一项复杂而具有挑战性的工作,通常需要由人类专家对源代码和/或目标代码进行密集的人工分析。要达到所需的性能水平可能很困难。这是因为人类专家需要花费大量的时间和精力对源代码和/或目标代码进行人工分析,以便确定编译器将源代码转换为目标代码(并最终转换为可在特定处理器上执行的可执行文件)的优选优化方案。此外,由于人类专家对优化方案的选择取决于人类专家的主观判断和偏见,因此未必能得到最优的优化方案。由于可用于执行可执行文件的不同类型的处理器,例如中央处理器(central processing unit,简称CPU)、图形处理器(graphicsprocessing unit,简称GPU)、数字信号处理器(digital signal processor,简称DSP)、机器学习集成电路(integrated circuit,简称IC)、现场可编程门阵列(field programmablegate array,简称FPGA)等,越来越多,且具有专有的架构,即使是专家也可能对其不熟悉,这使得人类专家对源代码和/或目标代码的人工分析越来越难以保证编译器生成的可执行文件具有所需水平的性能,从而使这个问题变得更加严重。
发明内容
根据一方面,提供了一种自动调整和编译源代码的方法,所述方法包括:在计算设备处接收源代码;根据第一优化方案通过编译所述源代码生成第一可执行文件;在所述计算设备处生成包括与所述第一优化方案有关的数据的编译报告;在所述计算设备处生成性能报告,所述性能报告包括与所述第一可执行文件的执行性能有关的动态数据;在所述计算设备处接收指示与所述第一可执行文件的所述执行性能相关联的一个或多个性能瓶颈的性能瓶颈信息;在所述计算设备处,至少根据所述编译报告、所述性能报告和所述性能瓶颈信息生成第二优化方案;根据所述第二优化方案,通过编译所述源代码在计算设备处生成第二可执行文件;以及计算设备根据所述第一可执行文件和所述第二可执行文件,输出优化后的可执行文件。
在任一前述实施例中,所述方法还包括:在生成所述第一可执行文件之前,识别与所述源代码相关联的一个或多个性能参数。
在任一前述实施例中,所述第二优化方案中至少一个性能参数的值与所述第一优化方案中所述至少一个性能参数的值不同。
在任一前述实施例中,所述生成所述第二优化方案包括:机器学习模块基于所述编译报告和所述性能报告中的至少一个确定所述第二优化方案。
在任一前述实施例中,所述输出所述优化后的可执行文件包括:确定与所述第二可执行文件的执行性能有关的动态数据在性能指标方面是否优于与所述第一可执行文件的所述执行性能有关的所述动态数据。
在任一前述实施例中,所述编译报告包括以下至少一项:编译器对所述源代码执行的一个或多个转换的标识;以及对于由所述编译器执行的所述一个或多个转换中的每一个,在所述源代码中执行相应转换的相应位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201880094867.4/2.html,转载请声明来源钻瓜专利网。