1.一种基于多层中间表示的领域特定语言编译器优化方法,其特征在于,步骤包括:步骤S1.基于MLIR的DSL设计:定义DSL的语法以简化MLIR中的表示和操作,将MLIR中操作符进行分类,并将MLIR中各类操作符与DSL中关键字进行对应;步骤S2.MLIR到DSL的翻译:对目标MLIR代码进行解析,提取出每个操作的输入、输出以及控制流语义,并将MLIR代码中的操作符映射为DSL中的对应表达,以及将目标MLIR代码中各优化策略转换为DSL表示,以将目标MLIR代码翻译为DSL表示;步骤S3.基于AI的编译优化:根据翻译得到的DSL表示生成DSL代码,分别获取不同优化策略,并采用蒙特卡洛树搜索算法不断模拟和评估不同优化策略的性能以寻找出最优的优化策略,在搜索过程中使用搜索树表示不同的优化状态、每个节点代表一种优化决策,通过扩展每个子节点使得搜索树不断生长,直至得到最优的优化策略,实现编译器优化。
2.根据权利要求1所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,所述步骤S1中,将MLIR中操作符分类为算数操作符、逻辑操作符、比较操作符、内存操作符、函数操作、控制流操作符以及向量和张量操作符。
3.根据权利要求1所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,步骤S1定义DSL的语法中,定义类型包括def_func、def_mod、call、comm、log、profile以分别对应定义函数、定义模型、计算、通信、打印日志以及追踪运行信息,以及分别使用const、var和ext作为前置分别代表常数、变量和执行参数。
4.根据权利要求1所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,所述步骤S2中对目标MLIR代码进行解析,将MLIR代码中的操作符映射为DSL中的对应表达包括:步骤S201.对目标MLIR代码中的中间表示进行遍历,并根据操作类型解析每个操作符,提取出每个操作的输入、输出以及控制流语义;步骤S202.在解析过程中,使用一个映射表将目标MLIR代码中的操作符映射为DSL中的对应表达。
5.根据权利要求1所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,所述步骤S2中将目标MLIR代码中各优化策略转换为DSL表示包括将目标MLIR代码中循环展开、函数内联优化、向量化优化以及常量折叠转换为DSL表示,其中,对循环展开的代码进行转换的过程中包括按照DSL语法简化其中的操作、去除MLIR代码中的类型声明以及将MLIR代码中操作符映射为DSL的对应表达;对函数内联优化的代码进行转换的过程中包括将MLIR代码中操作符映射为DSL的对应表达、按照DSL语法简化参数和返回类型的声明、去掉冗余的类型信息和符号化的变量表示;对向量化优化的代码进行转换的过程中包括将MLIR代码中操作符映射为DSL的对应表达,向量加载操作中直接将数组名称和索引作为参数传入,向量加法操作中参数是加载的向量变量;对常量折叠的代码的转换过程中,包括将MLIR代码中操作符映射为DSL的对应表达,常量通过对应关键字直接声明,并去除冗余的语法元素。
6.根据权利要求1~5中任意一项所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,所述步骤S3中,采用蒙特卡洛树搜索算法不断模拟和评估不同优化策略的性能以寻找出最优的优化策略的步骤包括:步骤S301.构建搜索树:搜索树的根节点表示原始程序的状态,即未进行任何优化操作的代码,每个子节点表示一种具体的优化决策状态;步骤S302.选择:从根节点开始遍历搜索树,每次选择满足预设要求的子节点进行遍历,直到到达一个未完全展开的节点;步骤S303.扩展:对当前未完全展开的节点创建新的子节点以进行节点扩展;步骤S304.模拟:模拟新扩展的子节点对应的优化策略的效果;步骤S305回传:将模拟得到的性能评估结果沿着从根节点到当前节点的路径进行回传,并更新路径上每个节点的访问次数和性能估计,如果当前节点的模拟结果满足预设要求,则在回传过程中提高当前优化策略对应的节点及其祖先节点的性能评估结果,以使得提高当前节点及其祖先节点未来被选中概率;步骤S306.循环搜索与最优策略确定:循环执行步骤S302~步骤S305,以通过多次重复选择、扩展、模拟和回传步骤不断地探索循环展开策略空间,使得搜索树不断生长和优化,直至迭代达到预设要求后,选择具有最优性能的节点所对应的优化策略作为最优优化策略。
7.根据权利要求6所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,当为循环展开优化策略时,步骤S301中节点表示为循环展开次数,步骤S303中节点拓展会对循环进行K次展开,经过多次迭代搜索的目标为最优的循环展开次数;当为函数内联的优化策略时,步骤S301中节点表示将函数内联到调用点的状态,步骤S303中节点拓展时将频繁调用的小函数内联,经过多次迭代搜索的目标为最佳的函数内联选择;当为向量化的优化策略时,步骤S301中节点表示对数据段进行向量化操作,步骤S303中节点拓展时对数据块进行向量化处理,经过多次迭代搜索的目标为最有效的向量化方案;当为常量折叠的优化策略时,步骤S301中节点表示表达式中常量折叠的状态,步骤S303中节点拓展会提前计算表达式中的常量并进行折叠,经过多次迭代搜索的目标为最合理的常量折叠组合。
8.根据权利要求6所述的基于多层中间表示的领域特定语言编译器优化方法,其特征在于,步骤S302中,选择具有最高UCB值的子节点进行遍历,或者综合UCB算法和策略网络分数按照下式计算选择分数 ,选择具有最高选择分数 的子节点进行遍历;其中, 和 分别是UCB和策略网络分数的权重, 表示策略网络分数, 表示第i个节点的UCB值, 是在第i个节点的平均性能估计, 是第i个节点的访问次数, 是其父节点的访问次数。
9.一种编译器系统,包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序执行时实现如权利要求1~8中任意一项所述的方法。