基于UniXcoder的L...M后端定制代码生成技术研究.pdf
基于UinXcoder的LLVM后端定制代码生成技术研究
摘要
编译器是一种将高级语言源代码转化为目标代码的软件工具。随着芯片性能瓶颈
期的到来,编译器的开发必然会是未来的主流的研究方向。编译器后端往往是编译器
最复杂的部分,开发起来需要大量时间。因此,本文旨在探究一种有效的编译器自动
代码生成方法,以期提高编译器的开发效率。本文主要的研究内容及贡献如下:
为了更高效的对编译器后端代码进行生成,本文提出了一种基于预训练语言模型
的编译器后端代码生成方法。该方法在UniXcoder的基础上建模了面向LLVM后端的
代码生成任务。该任务通过将与目标有关的特征信息作为模型的输入数据进行训练,
使得模型具有生成编译器后端代码的能力。为了训练面向LLVM后端代码生成任务,
本文使用函数拆分、特征提取、标记化等数据预处理方法对数据进行处理,构建了
LLVM后端数据集。将经过预处理的数据集在模型上进行训练后,使用该模型进行编
译器后端代码生成。实验部分,利用BLEU-4得分和精准匹配度两个评估指标对模型生
成的后端代码进行评估,实验表明,与Transformer和UniXcoder模型相比,本文提出
的方法训练得到的模型有着更为优异的性能。
为了解决数据不足的问题,本文提出了基于特征增强的辅助任务。该任务利用
LLVM后端特征语义预测后端特征名称,并将其与面向LLVM后端代码生成任务一同
进行多任务学习。实验表明,特征增强辅助任务对于LLVM后端代码生成任务有着显
著的提升效果,证明了该方法的有效性。为了解决数据复杂的问题,本文提出了一种
相似性筛选方法。该方法利用控制流图来表征代码结构,并采用图同构算法判断代码
相似性。利用图同构算法筛选出相似性高的数据集进行模型训练,以提升模型的性能。
实验结果显示,采用筛选的数据集训练得到的模型具有较好的生成能力。
关键词:编译器;LLVM;自动代码生成;预训练语言模型
基于UinXcoder的LLVM后端定制代码生成技术研究
Abstract
Acompilerisasoftwaretoolthatconvertshigh-levellanguagesourcecodeintotargetcode.
Withthearrivalofthebottleneckperiodofchipperformance,thedevelopmentofcompilerwill
inevitablybethemainstreamresearchdirectioninthefuture.Thebackendofthecompileris
oftenthemostcomplexpartofthecompiler,andittakesalotoftimetodevelop.Therefore,
thisthesisaimstoexploreaneffectivecompilerautomaticcodegenerationmethodtoimprove
theefficiencyofcompilerdevelopment.Themainresearchcontentsandcontributionsofthis
thesisareasfollows:
Inordertogeneratecompilerback-endcodemoreefficiently,thisthesisproposesa
compilerback-endcodegenerationmethodbasedonpre-trainedlanguagemodel.Thismethod
modelsthecodegenerationtaskforLLVMbackendbasedonUniXcoder.Thetasktrainsthe
modelbyusingthefeatureinformationrelatedtothetargetasthe