编译器后端自动生成方法及系统技术方案

技术编号:39489237 阅读:20 留言:0更新日期:2023-11-24 11:11
本发明专利技术提供一种用于编译器后端生成的神经网络模型的训练方法,包括:对于不同目标架构的函数,将同组函数对应的抽象语法树进行匹配,得到各个函数中的语句所对应的语句模板,以及特定于目标架构的信息的位置;分析语句模板和特定于目标架构的信息,形成目标相关索引表,以保存特征至特征值定义位置的映射关系;根据所述每一个语句模板,查找所述目标相关索引表,在不同目标架构的目标描述文件中提取所述语句模板的特征值以生成所述不同目标架构下与所述语句模板对应的特征序列

【技术实现步骤摘要】
编译器后端自动生成方法及系统


[0001]本专利技术属于计算机
,具体涉及编译器代码的自动生成,尤其涉及编译器后端代码的自动生成


技术介绍

[0002]编译器作为芯片配套的重要基础软件,向上封装高级语言从而提高应用软件的开发效率和兼容性,向下适应体系结构以生成高效的可执行代码,是沟通软硬件的桥梁

编译技术的优劣在极大程度上决定了处理器的个性化设计

体系结构优势是否能够充分发挥出来;编译器研发的快慢,直接影响芯片开发的速度

[0003]经过几十年的努力,编译器社区成功建立了强大的现代编译器基础设施,例如
GCC(GNU
编译器套件
)、MLIR(
多级别中间表示
)
以及
LLVM。
其中,
LLVM
是构建编译器的框架系统,以
C++
编写而成,提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用,是一个模块化

可重复使用的编译器和工具技术的集合

现代编译器通常采用三段式架构,将编译器分为前端

中端和后端,为编译器移植提供了很大的灵活性

当需要支持新的目标架构时,只需要开发一个后端,复用前端和中端,极大提高了编译器移植效率

现有的编译器框架系统,例如
LLVM
,通常利用目标无关代码生成机制来支持不同的微处理器
。<br/>目标无关代码生成机制将目标描述信息作为输入提供给编译器,并以类和虚方法等接口的形式提供了一系列可重用组件,用于将编译器的中间表示转换为指定种类的机器代码,它不受限于某一种体系结构,因此被称为目标无关

当研发人员为新目标架构开发编译器后端时,需要手动编写代码,为提供的接口创建具体的特定于目标架构的实现,并嵌入一组与目标特性相关的属性值

[0004]编译器后端负责实现代码生成和优化功能,是整个编译器的核心,其复杂性是造成开发效率低的主要原因

且不同指令集体系结构
(ISA)
之间差异较大,各有特点,开发过程中必定涉及特定于目标架构的信息,再叠加不同的开发人员,在开发不同目标架构对应的后端时,文件组织方式及代码风格不一致,最终导致编译器后端开发效率低下

[0005]随着芯片研发周期不断提速,大量的新芯片涌向市场

如何在短时间内为新芯片高效开发编译器,已成为工具链开发中的瓶颈之一


技术实现思路

[0006]因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种用于编译器后端生成的神经网络模型的训练方法和一种根据所述训练方法所生成的神经网络模型的编译器后端生成方法

[0007]根据本专利技术的第一方面,提供一种用于编译器后端生成的神经网络模型的训练方法,包括:
[0008]S1:
对于不同目标架构的函数,将同组函数对应的抽象语法树进行匹配,得到各个函数中的语句所对应的语句模板,以及特定于目标架构的信息的位置;
[0009]S2:
分析语句模板和特定于目标架构的信息,形成目标相关索引表,以保存特征至特征值定义位置的映射关系;
[0010]S3:
根据所述每一个语句模板,查找所述目标相关索引表,在不同目标架构的目标描述文件中提取所述语句模板的特征值以生成所述不同目标架构下与所述语句模板对应的特征序列;
[0011]S4:
利用所述特征序列训练所述神经网络模型

[0012]根据本专利技术的一个实施例,所述
S1
包括:
[0013]S1
‑1:将不同目标架构的函数按名称进行分组并转换为抽象语法树;
[0014]S1
‑2:将同组函数对应的抽象语法树进行匹配得到各个函数中的语句所对应的语句模板,以及特定于目标架构的信息的位置

[0015]3.
根据权利要求1或2所述的神经网络模型的训练方法,其特征在于,利用树差分算法将同组函数对应的抽象语法树进行匹配

[0016]根据本专利技术的一个实施例,所述
S2
包括:
[0017]S2
‑1:分别从架构,函数,语句层级寻找语句模板以及特定于目标架构的信息的共性构建特征;
[0018]S2
‑2:记录所述特征名称,所属级别,语句模板关联信息,对应的特征值所在的文件名称,对应的特征值所在文件中的位置形成目标相关索引表

[0019]根据本专利技术的一个实施例,所述
S3
包括:
[0020]S3

1:
针对每一个语句模板,根据目标架构名称,函数名称,语句名称查找目标相关索引表中的与语句模板关联信息,确定所述语句模板包含的特征;
[0021]S3

2:
根据所述语句模板包含的特征,根据对应的目标相关索引表中的文件名称和文件位置提取特征值;
[0022]S3

3:
将所述语句模板和所述语句模板的特征值合成所述目标架构下所述语句模板的特征序列

[0023]根据本专利技术的一个实施例,当一个语句模板在一个目标架构的后端中没有对应的语句时,所述语句模板在所述目标架构下的特征值为空

[0024]根据本专利技术的一个实施例,所述
S4
包括:
[0025]S4

1:
依次将所述特征序列和对应的语句输入所述神经网络模型;
[0026]S4

2:
重复执行
S4
‑1预定次数

[0027]根据本专利技术的一个实施例,所述特征序列保存语句模板和其在不同目标架构下的特征值的对应关系

[0028]根据本专利技术的一个实施例,所述神经网络模型为预训练
Transformer
模型

[0029]根据本专利技术的第二方面,提供一种基于上述任一所述方法所生成的神经网络模型的编译器后端生成方法,用于根据待生成编译器后端的架构的目标描述文件生成编译器后端,包括:
[0030]S1:
用所述待生成编译器后端的架构的名称替换目标相关索引表中的相应名称;
[0031]S2:
利用目标相关索引表,提取代码模板中各个语句模板的特征值
,
生成所述待生成编译器后端的架构的特征序列;
[0032]S3:
将所述特征序列输入所述训练好的神经网络模型,生成所述编译器后端

[0033]通过上述本专利技术具体实施例,能够解决编译器后端开发慢和难的问题,降低芯片开发门槛,节约时间与人工成本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种用于编译器后端生成的神经网络模型的训练方法,其特征在于,包括:
S1:
对于不同目标架构的函数,将同组函数对应的抽象语法树进行匹配,得到各个函数中的语句所对应的语句模板,以及特定于目标架构的信息的位置;
S2:
分析语句模板和特定于目标架构的信息,形成目标相关索引表,以保存特征至特征值定义位置的映射关系;
S3:
根据所述每一个语句模板,查找所述目标相关索引表,在不同目标架构的目标描述文件中提取所述语句模板的特征值以生成所述不同目标架构下与所述语句模板对应的特征序列;
S4:
利用所述特征序列训练所述神经网络模型
。2.
根据权利要求1所述的神经网络模型的训练方法,其特征在于,所述
S1
包括:
S1
‑1:将不同目标架构的函数按名称进行分组并转换为抽象语法树;
S1
‑2:将同组函数对应的抽象语法树进行匹配得到各个函数中的语句所对应的语句模板,以及特定于目标架构的信息的位置
。3.
根据权利要求1或2所述的神经网络模型的训练方法,其特征在于,利用树差分算法将同组函数对应的抽象语法树进行匹配
。4.
根据权利要求1所述的神经网络模型的训练方法,其特征在于,所述
S2
包括:
S2
‑1:分别从架构,函数,语句层级寻找语句模板以及特定于目标架构的信息的共性构建特征;
S2
‑2:记录所述特征名称,所属级别,语句模板关联信息,对应的特征值所在的文件名称,对应的特征值所在文件中的位置形成目标相关索引表
。5.
根据权利要求4所述的神经网络模型的训练方法,其特征在于,所述
S3
包括:
S3

1:
针对每一个语句模板,根据目标架构名称,函数名称,语...

【专利技术属性】
技术研发人员:王莹莹钟茗王陆霖邱蕾吕方冯晓兵
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1