[发明专利]基于RL的超优化编译器建立、代码超优化方法及系统有效
申请号: | 202110507940.X | 申请日: | 2021-05-10 |
公开(公告)号: | CN113204349B | 公开(公告)日: | 2023-02-03 |
发明(设计)人: | 赵佳棋;张成;汤战勇;王焕廷;叶贵鑫;陈晓江 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 王芳 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 rl 优化 编译器 建立 代码 方法 系统 | ||
本发明属于计算机编译器超优化技术领域,公开了一种基于RL的超优化编译器建立、代码超优化方法及系统。该超优化编译器可以直接应用于编译器后端,可以对现有的编译器生成的可执行的二进制文件进行更优秀的重编译,从而提高代码的执行速度和效率,为后续编译器超优化的研究提供了更广阔的设计思路和技术支持。
技术领域
本发明属于计算机编译器超优化技术领域,具体涉及一种基于RL的超优化编译器建立、代码超优化方法及系统。
背景技术
编译器是将“一种语言”翻译为“另一种语言”的程序,在许多应用领域中,尽可能地生成高性能的代码具有很大的价值,故传统的编译器翻译过程产生的代码指令序列还存在进一步优化的空间。
超优化是一种产生完美优化代码的想法,它的核心思想是对于每一个代码而言,超优化编译器都能找到其对应的最优的指令序列,即能在现有编译器的基础上对编译器进行进一步的优化以达到“超优化”。代码超优化在搜索时,通常通过对每个可能的指令序列进行暴力搜索,检查它是否执行了代码相关操作并选择是否接受该序列。但是通过蛮力搜索的方式解决问题显然会受问题规模的影响,随着指令序列的长度的增加,其大小呈爆炸性增长,即使可以通过设置条件限制来进行剪枝,其搜索空间大小仍及其可观。
因此,除了传统的通过蛮力搜索实现的超级优化器之外,现有技术中还研究有关机器学习和约束求解方法实现优化搜索的超级优化器。例如,stoke是X86-64指令集的随机优化器和程序合成器。stoke使用随机搜索来探索所有可能的程序转化的极高维度空间,其中任何随机变换都不太可能产生所需的代码序列,因此stoke重复应用数百万个变换来产生新的的代码序列,但这种随机搜索存在的问题是搜索空间巨大,且消耗大量时间和资源。
发明内容
本发明的目的在于提供一种基于RL的超优化编译器建立、代码超优化方法及系统,用以解决现有技术中在进行编译器超优化时,搜索时间长,搜索效率低下,以及编译器本身使用的随机搜索方法牺牲了搜索完整性等问题。
为了实现上述任务,本发明采用以下技术方案:
一种基于RL的超优化编译器建立方法,包括如下步骤:
步骤1:获取源代码,将源代码转换为二进制文件后输入编译器中进行搜索,输出搜索过程中的所有搜索路径;
步骤2:对每条搜索路径进行解析,获得每条搜索路径包含的多个词条,其中,每个词条包括代码优化程度、突变代码和随机突变方向;
步骤3:将所有搜索路径包含的词条作为训练集,将随机突变方向的种类作为标签,对编译器通过强化学习方法进行训练,所述强化学习方法包括reward、action和state三个参数,其中,将每个词条的代码优化程度作为reward,将每个词条的随机突变方向作为action,将每个词条的突变代码作为state;
将训练好的编译器作为超优化编译器,所述的超优化编译器的突变方向为优化后的随机突变方向。
进一步的,所述的随机突变方向包括9种,分别为:Opcode、Operand、GlobalSwap、LocalSwap、AddNops、Delete、Instruction、Weighted和Resize。
一种代码超优化方法,该方法用于获取待优化源代码,将待优化源代码输入采用基于RL的超优化编译器建立方法建立的超优化编译器中,获得待优化源代码的突变方向,直至代码收敛时优化结束,输出超优化代码。
一种代码超优化系统,包括输入单元、预处理单元、模型训练单元和超优化编译器;
所述的输入单元用于获取源代码,将源代码转换为二进制文件后输入编译器中进行搜索,输出搜索过程中的所有搜索路径;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110507940.X/2.html,转载请声明来源钻瓜专利网。