[发明专利]基于RL的超优化编译器建立、代码超优化方法及系统有效
申请号: | 202110507940.X | 申请日: | 2021-05-10 |
公开(公告)号: | CN113204349B | 公开(公告)日: | 2023-02-03 |
发明(设计)人: | 赵佳棋;张成;汤战勇;王焕廷;叶贵鑫;陈晓江 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 王芳 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 rl 优化 编译器 建立 代码 方法 系统 | ||
1.一种基于RL的超优化编译器建立方法,其特征在于,包括如下步骤:
步骤1:获取源代码,将源代码转换为二进制文件后输入编译器中进行搜索,输出搜索过程中的所有搜索路径;
步骤2:采用NLP技术中文本转embedding方法doc2vec算法对每条搜索路径进行解析,获得每条搜索路径包含的多个词条,其中,每个词条包括代码优化程度、突变代码和随机突变方向;包括如下子步骤:
1)将搜索路径文件search.txt里面的每轮出现的Reward/Code/Action分成一个词条,将每个搜索路径保存成如下字典形式log_data = {action:None, reward:None, code:None, cost:None};
2)将解析出来的词条和code索引项通过遍历保存成一个list格式的数据集,同时将索引号码保存成另一个list格式的数据标签;
3)将数据集和对应的数据标签打包成机器机器学习模型doc2vec数据集的格式,通过doc2vec方法,设定embedding的长度vector_size=128,窗口大小为10,最小词条长度为1,训练次数epochs=20,训练出一个词法相关的模型model,然后在通过这个训练好的model,用model.infer_vector对每一个条目生成对应的code embedding;
4)获得每个action的独热编码(one-hot)将分类的变量作为二进制向量表示;
步骤3:将所有搜索路径包含的词条作为训练集,将随机突变方向的种类作为标签,对编译器通过强化学习方法进行训练,所述强化学习方法采用PPO方法,所述PPO方法的目标是计算策略π∗使期望的回报最大化,,其中,是定义单个情节的一系列状态和行为,学习者试图在当前状态下找到一个最佳行动,它包括学习寻找最佳行动和反复试验;在该PPO方法中定义action =[0,1,2,3,4,5,6,7,8] 分别是每个词条随机突变的9种方式,定义observation_space是数据预处理阶段的embedding模型,定义reward是每个词条的代码优化程度,即突变后的指令函数运行在llvm中执行时间通过numpy包中的tanh双曲正切函数计算得到;定义state是每个词条的突变代码;将STOKE生成的搜索空间和搜索路径以及搜索过程中经历的action和Reward输入到待优化的编译器中,让编译器学习STOKE的搜索策略,找到随机突变对代码优化的影响,最后得到一个训练好的编译器保存在~/ray_results/PPO_*中;
将训练好的编译器作为超优化编译器,所述的超优化编译器的突变方向为优化后的随机突变方向。
2.如权利要求1所述的基于RL的超优化编译器建立方法,其特征在于,所述的随机突变方向包括9种,分别为:Opcode、Operand、GlobalSwap、LocalSwap、AddNops、Delete、Instruction、Weighted和Resize。
3.一种代码超优化方法,其特征在于,该方法用于获取待优化源代码,将待优化源代码输入采用权利要求1或2的基于RL的超优化编译器建立方法建立的超优化编译器中,获得待优化源代码的突变方向,直至代码收敛时优化结束,输出超优化代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110507940.X/1.html,转载请声明来源钻瓜专利网。