[发明专利]编译器以及用于编译源代码的方法有效
申请号: | 201480083834.1 | 申请日: | 2014-12-04 |
公开(公告)号: | CN107003884B | 公开(公告)日: | 2019-12-24 |
发明(设计)人: | 伊利亚·格里戈里耶维奇·克柳奇科夫;亚历山大·弗拉基米罗维奇·斯莱萨连科 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 11205 北京同立钧成知识产权代理有限公司 | 代理人: | 杨文娟;臧建明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 可执行程序 源代码 中间表示 变换应用 输出程序 转换 度量 编译 个性 融合 替代 | ||
用于编译源代码的方法包括:分别使用多个替代转换方案将所述源代码转换成多个中间表示;将融合和/或变换应用于所述多个中间表示中的每一个以获得多个变换后表示;分别从所述多个变换后表示中生成多个可执行程序;以及取决于所述多个可执行程序的一个或多个性能度量而选择所述多个可执行程序中的一个或多个作为输出程序。
技术领域
本发明涉及一种编译器以及一种用于具体来说通过使用多阶段编程编译源代码的方法。
背景技术
多阶段编程(Multi-stage programming,MSP)是用于通过使用简洁、精心设计的语言扩展开发通用软件的范例,所述语言扩展支持运行时代码生成和程序执行。在执行时,多阶段程序首先自身构造为中间表示。此中间表示得到优化,根据优化的中间表示生成新代码并且最后执行新生成的代码。
MSP的一个应用是高性能嵌入式领域专用语言(domain-specific language,DSL),所述高性能嵌入式DSL可以用于机器学习、科学计算、图像处理、大数据分析和应用程序的其它类似复杂领域中。
MSP的技术通常是已知的并且实施于例如MetaML、MetaOcaml、Template Haskell或Delite的若干高级编程语言中。例如,Delite是斯坦福大学开发的用于并行嵌入式DSL的编译器架构。例如,可以在以下文献中找到MSP的背景介绍:Taha,W.的“对多阶段编程的简单介绍(A gentle introduction to multi-stage programming)”;《领域专用程序生成》,施普林格出版社,2004年;第30至50页;Rompf,T、Odersky,M.的“轻型模块化分级:运行时代码生成和编译DSL的实用方法(Lightweight modular staging:a pragmatic approach toruntime code generation and complied DSLs)”美国计算机学会程序设计语言专业组通讯,卷46(2);美国计算机学会,2010年,以及Rompf,T.、Sujeeth,A.K.、Amin,N.、Brown,K.J.、Jovanovic,V、Lee,H.-J.、Jonnalagedda,M.、Olukotun,K.、Odersky,M.、POPL'13:第40届ACM SIGPLAN-SIGACT编程语言原理研讨会,2013年1月。
然而,需要改进由多阶段编程生成的可执行程序的性能的解决方案。
发明内容
因此,本发明的目标是提供一种编译器,具体来说多阶段编程编译器以及一种用于具体来说在多阶段编程的机制下编译源代码的方法,所述编译器和方法能够在编译过程中加宽用于优化的搜索空间并且对于改进的用户控制优化,允许加宽变得更通用和可扩展。
根据本发明的第一方面,用于编译源代码的方法包括:分别使用多个替代转换方案将源代码转换成多个中间表示;将融合和/或变换应用于多个中间表示中的每一个以获得多个变换后表示;分别从多个变换后表示中生成多个可执行程序;以及取决于多个可执行程序的一个或多个性能度量而选择多个可执行程序中的一个或多个作为输出程序。
在根据第一方面的方法的第一实施形式中,性能度量可以包括执行速度、内存占用率、环路数目、环路距离的总和、环路的嵌套深度、运行时间和编译时间中的一个或多个。
在根据第一方面的方法的第二实施形式或根据第一方面的方法的任何实施形式中,变换包括不可达代码去除、代码移动、公用子表达式去除、折叠和提取、折叠和嵌入、嵌入和常量折叠中的一个或多个。
在根据第一方面的方法的第三实施形式或根据第一方面的方法的任何实施形式中,将融合和/或变换应用于多个中间表示中的每一个以获得多个变换后表示可以包括:将多个不同变换应用于多个中间表示中的每一个以获得多个中间表示中的每一个的多个变换后表示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480083834.1/2.html,转载请声明来源钻瓜专利网。