当前位置: 首页 > 专利查询>谷歌公司专利>正文

精细粒度需求驱动的IPO基础架构制造技术

技术编号:16307961 阅读:36 留言:0更新日期:2017-09-27 01:53
提供了用于过程间优化(IPO)的方法和系统。新的IPO架构(称为“ThinLTO”)被设计为解决现有IPO手段(诸如,传统的链接时间优化(LTO)和轻量级过程间优化(LIPO))的缺点和限制,并成为新的链接‑时间优化标准。使用ThinLTO,需求驱动和基于摘要的精细粒度的导入最大化跨模块优化(CMO)的潜力,这使得CMO尽可能有用。ThinLTO还提供全局索引,其使得能够快速函数导入;并行一些性能关键但昂贵的过程间分析和转换;利用需求驱动的惰性导入将调试构建的存储器消耗最小化的调试信息;并允许轻松集成第三方分布式构建系统。此外,ThinLTO还可以使用IPO服务器实现,从而消除对串行步骤的需要。

Fine grained Requirements Driven IPO infrastructure

Methods and systems for inter process optimization (IPO) are provided. The new IPO framework (referred to as \ThinLTO\) is designed to solve the existing IPO methods (such as traditional link time optimization (LTO) and lightweight process optimization (LIPO)) of the disadvantages and limitations, and become the new standard link time optimization. Using ThinLTO, demand driven and summary based fine grained imports maximize the potential of cross module optimization (CMO), which makes CMO as useful as possible. ThinLTO also provides a global index, which enables fast function parallel import; some key performance but expensive interprocedural analysis and transformation; import demand driven by inertia will be constructed to minimize the consumption of memory debugging debugging information; and allows easy integration of third party distributed system. In addition, ThinLTO can also be implemented using the IPO server, eliminating the need for serial steps.

【技术实现步骤摘要】
【国外来华专利技术】精细粒度需求驱动的IPO基础架构相关申请的交叉引用本申请要求于2015年2月2日提交的美国临时专利申请序列号62/110,738的优先权,其全部公开内容通过引用并入本文。
技术介绍
跨模块优化(CMO)(其通常意指过程间优化(IPO))是使得编译器能够优化用户程序的最有效方式之一。传统上,使用称为链接时间优化(LTO)的技术实现CMO。LTO是编译模型,其在链接时启用跨模块优化和整个程序分析(顾名思义)。然而,LTO受到几个限制,使其不适合用于非常大的应用。这样的限制包括例如:(1)LTO需要大量的存储器来执行链接步骤;(2)链接步骤是连续的,并且大大减慢了整体编译;和(3)LTO不能轻易地与大型分布式构建系统集成。用于实现CMO的其它现有技术被称为轻量级IPO(LIPO),其比LTO更具可扩展性。然而,LIPO受到自己的限制,并且在能够进一步提高LIPO的性能方面已经达到了上限。与LIPO相关联的事务的一些示例包括:(1)LIPO需要简档(profile)反馈,并且默认不能启用;(2)LIPO对构建系统非常侵入(例如,需要复杂的构建系统支持来部署它);以及(3)LIPO使用粗略粒度导入方法,其大大限制了CMO的潜力。
技术实现思路

技术实现思路
以简化形式介绍了概念的选择,以提供对本公开的某些方面的基本理解。本
技术实现思路
不是对本公开的广泛概述,并且不旨在识别本公开的关键或重要要素或描绘本公开的范围。本
技术实现思路
只是将本公开的一些概念呈现为下面提供的具体实施方式的前序。本公开一般涉及用于源代码编译的方法和系统。更具体地,本公开的方面涉及用于实现IPO的新的架构。如将在本文中更详细地描述的,本公开的IPO架构被设计为扩展到非常大的程序,在其可以处理的源模块的数量方面几乎没有限制,非常快,并且针对默认编译模式(例如,默认开启)。此外,本文所述的IPO架构设计为对单个机器并行构建和大型分布式构建系统都友好,并允许以最少的开销进行非常深入的优化。本公开的一个实施例涉及一种用于过程间优化的方法,包括:为多个源代码模块中的每一个生成中间表示文件;为多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储用于对应的源代码模块的所生成的函数索引和函数摘要数据;使用组合函数映射生成所生成的中间表示文件的精简档案;以及对多个源代码模块执行跨模块优化。在另一个实施例中,在用于过程间优化的方法中执行跨模块优化包括使用组合函数映射执行快速函数导入。在另一个实施例中,在用于过程间优化的方法中执行跨模块优化包括使用来自一个或多个其它模块的调试信息的需求驱动的导入。本公开的另一个实施例涉及一种计算机实现的方法,包括对多个源代码模块执行跨模块优化,其中跨模块优化以模块粒度并行,使用组合函数映射执行快速函数导入,并使用来自其它模块的调试信息的需求驱动的导入。在另一个实施例中,该方法还包括为多个源代码模块中的每一个生成中间表示文件。在另一个实施例中,该方法还包括为多个源代码模块中的每一个生成函数索引和函数摘要数据。还在另一个实施例中,该方法还包括:为多个源代码模块中的每一个生成中间表示文件;为多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储用于对应的源代码模块的所生成的函数索引和函数摘要数据;以及使用组合函数映射生成所生成的中间表示文件的精简档案。本公开的另一实施例涉及一种用于过程间优化的系统,包括至少一个处理器和耦合到至少一个处理器的非暂时性计算机可读介质,具有存储在其上的指令,所述指令当由至少一个处理器执行时使至少一个处理器:为多个源代码模块中的每一个生成中间表示文件;为多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储用于对应的源代码模块的所生成的函数索引和函数摘要数据;使用组合函数映射生成所生成的中间表示文件的精简档案;和对多个源代码模块执行跨模块优化。在另一个实施例中,用于进程间优化的系统中的至少一个处理器进一步使使用组合函数映射执行快速函数导入。在另一个实施例中,用于过程间优化的系统中的至少一个处理器进一步使使用来自一个或多个其它模块的调试信息的需求驱动的导入。本公开的另一个实施例涉及一种系统,包括至少一个处理器和耦合到至少一个处理器的非暂时性计算机可读介质,其具有存储在其上的指令,所述指令当由至少一个处理器执行时,使至少一个处理器:对多个源代码模块执行跨模块优化,其中跨模块优化以模块粒度并行,使用组合函数映射执行快速函数导入,并且使用来自其它模块的调试信息的需求驱动的导入。在另一个实施例中,系统中的至少一个处理器进一步使:为多个源代码模块中的每一个生成中间表示文件。在另一个实施例中,系统中的至少一个处理器进一步使:为多个源代码模块中的每一个生成函数索引和函数摘要数据。在另一个实施例中,系统中的至少一个处理器进一步使:为多个源代码模块中的每一个生成中间表示文件;为多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储用于对应的源代码模块的所生成函数索引和函数摘要数据;并且使用组合函数映射生成所生成的中间表示文件的精简档案。本文公开的一些或全部处理器和存储器系统的实施例还可以被配置为执行上述公开的方法实施例中的一些或全部。上面公开的方法中的一些或全部的实施例也可以被表示为在暂时性或非暂时性的处理器可读存储介质(诸如光学或磁存储器)上体现的指令,或者表示为经由通信网络(诸如互联网或电话连接)提供给处理器或数据处理装置的传播信号。从下面给出的具体实施方式中,本公开的方法和系统的适用性的其它范围将变得显而易见。然而,应当理解的是,具体实施方式和具体示例虽然指出了方法和系统的实施例,但是仅以说明的方式给出,因为在本文公开的概念的精神和范围内的各种改变和修改对于本领域技术人员来说根据该具体实施方式将变得显而易见。附图说明结合所附权利要求和附图对以下具体实施方式的研究,本公开的这些和其它目的、特征和特性对于本领域技术人员将变得更加显而易见,所有这些都形成本说明书的一部分。在附图中:图1是图示出根据本文所述的一个或多个实施例的IPO系统中的示例阶段的流程图。图2是图示出根据本文所述的一个或多个实施例的示例IR生成过程的流程图。图3是图示出根据本文所述的一个或多个实施例的使用惰性函数导入的示例IPO过程的流程图。图4是图示出根据本文所述的一个或多个实施例的用于迭代惰性函数导入的示例方法的流程图。图5是图示出根据本文所述的一个或多个实施例的布置用于创建跨模块优化的示例计算装置的框图。本文提供的标题仅为方便起见,并不一定影响本公开要求保护的范围或含义。在附图中,相同的附图标记和任何缩略语识别具有相同或相似结构或功能的元件或动作,以便于理解和方便。在下面的具体实施方式的过程中将详细描述附图。具体实施方式现在将描述本公开的方法和系统的各种示例和实施例。以下描述提供了对这些示例的透彻理解和实现描述的具体细节。然而,相关领域技术人员将理解,可以在没有这些细节的许多的情况下实践本文描述的一个或多个实施例。类似地,相关领域的技术人员还将理解,本公开的一个或多个实施例可以包括本文中未详细描述的其它特征。此外,一些众所周知的结构或功能本文档来自技高网...
精细粒度需求驱动的IPO基础架构

【技术保护点】
一种用于过程间优化的方法,包括:为多个源代码模块中的每一个生成中间表示文件;为所述多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储对应源代码模块的所生成的函数索引和函数摘要数据;使用组合函数映射生成所生成的中间表示文件的精简档案;以及对所述多个源代码模块执行跨模块优化。

【技术特征摘要】
【国外来华专利技术】2015.02.02 US 62/110,738;2015.02.27 US 14/634,4011.一种用于过程间优化的方法,包括:为多个源代码模块中的每一个生成中间表示文件;为所述多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储对应源代码模块的所生成的函数索引和函数摘要数据;使用组合函数映射生成所生成的中间表示文件的精简档案;以及对所述多个源代码模块执行跨模块优化。2.根据权利要求1所述的方法,其中,所述跨模块优化以模块粒度并行。3.根据权利要求1所述的方法,其中,执行所述跨模块优化包括:使用所述组合函数映射执行快速函数导入。4.根据权利要求1所述的方法,其中,执行所述跨模块优化包括:使用来自一个或多个其它模块的调试信息的需求驱动导入。5.一种计算机实现的方法,包括:对多个源代码模块执行跨模块优化,其中,所述跨模块优化以模块粒度并行,使用组合函数映射执行快速函数导入,并且使用来自其它模块的调试信息的需求驱动导入。6.根据权利要求5所述的方法,还包括:为所述多个源代码模块中的每一个生成中间表示文件。7.根据权利要求5所述的方法,还包括:为所述多个源代码模块中的每一个生成函数索引和函数摘要数据。8.根据权利要求5所述的方法,还包括:为所述多个源代码模块中的每一个生成中间表示文件;为所述多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储对应源代码模块的所生成的函数索引和函数摘要数据;以及使用组合函数映射生成所生成的中间表示文件的精简档案。9.一种用于过程间优化的系统,包括:至少一个处理器;和非暂时性计算机可读介质,所述非暂时性计算机可读介质耦合到所述至少一个处理器,具有存储在其上的指令,所述指令当由所述至少一个处理器执行时,使所述至少一个处理器:为多个源代码模块中的每一个生成中间表示文件;为所述多个源代码模块中的每一个生成函数索引和函数摘要数据;在每个中间表示文件的单独部分中存储对应源代码模块的所生成的函数索引和函数摘要数据;使用组合函数映射生成所生成的中间表示文件的精简档案;以及对所述多个源代码模块执行跨模块优化。10.根据权利要求9所述的系统,其中,所述跨模块优化以所述模块粒度并行。11.根据权利要求9所述的系统,其中,进一步使所述...

【专利技术属性】
技术研发人员:欣亮·戴维·李特雷莎·路易斯·约翰逊徐榕
申请(专利权)人:谷歌公司
类型:发明
国别省市:美国,US

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

1