面向异构众核后端基于代价模型的多面体优化方法技术

技术编号:27804885 阅读:12 留言:0更新日期:2021-03-30 09:12
本发明专利技术公开一种面向异构众核后端基于代价模型的多面体优化方法,包括以下步骤:S1、编译器解析位于主核和从核上的用户程序的编译标识,生成对应的主核中间表示和从核中间表示;S2、编译器对S1中生成的主核和从核的中间表示层代码进行分析和优化;S3、对是否实施多面体调度与优化方法进行收益评估;S4、对有收益的静态控制单元实施多面体调度与优化,生成新的中间表示;S5、编译器将新的向量中间表示生成可重定向文件;S6、将中的可重定向文件与库文件链接,生成可执行文件。本发明专利技术首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间。换以节省程序的编译时间。换以节省程序的编译时间。

【技术实现步骤摘要】
面向异构众核后端基于代价模型的多面体优化方法


[0001]本专利技术涉及一种面向异构众核后端基于代价模型的多面体优化方法,属于编译器优化


技术介绍

[0002]为了解决处理器提高主频而导致的功耗问题,同时,随着处理器架构的发展,单个芯片上集成多个核心的多核处理器已经随处可见,无论是大型机还是个人工作站都集成或多或少的加速核心。随着计算需求的提升我们需要更多的加速部件来提升我们的计算能力,片上异构众核架构便是其中之一。由于异构众核架构不同于多核架构,除了为了充分发挥片上核心计算能力而必须考虑程序并行性之外,由片上存储导致的数据局部性也成为众核程序优化的难点。此外,单核程序移植到众核上的任务也越来越艰巨。所以无论是开发并行程序还是实现传统单核应用程序的移植任务,都需要开发人员深入了解众核异构的目标特征信息,所以开发的难度高并且效率低。
[0003]传统的并行化编译器中虽然实现了程序自动变换技术,但由于程序自动变换技术分类多而复杂,传统并行化编译器所采用的变换模型存在诸多问题。例如,(1)传统并行化编译器只能处理完美嵌套循环;(2)传统并行化编译器只能表示循环展开和压紧、交换、反转、倾斜等优化,难以实现循环分块、合并、分布等优化;(3)传统并行化编译器一次只能实现一种变换技术;(4)传统并行化编译器难以组合多种变换技术的执行顺序,难以计算多种变换技术同时使用的总体收益。目前的多面体模型在主流编译器中也有应用,如GCC的Graphite框架,LLVM的Polly模块,不过这些多面体模型都是当作编译遍或者模块嵌入到通用编译器中。这些多面体模型的应用都集中在多核版本上。
[0004]由于片上异构主核和从核存在差异,片上异构众核架构在实现程序自动变换技术时,如果采用片上同构的变换模型可能会导致向量寄存器不能充分利用,流水线不能完全充满,数据载入不对齐等问题。因此对于片上主核和从核存在诸多差的异构众核架构来说,多面体编译技术并不能兼容主核和从核的差异,这势必会影响片上核心计算能力。
[0005]传统并行编译器优化技术针对数据级并行、指令集并行以及数据局部性优化的实现上存在众多不足之处。多面体优化技术虽然能够弥补这些不足,但是众核平台上由于主核和从核的指令集、寄存器、计算单元等有很大差别,因此在众核平台上实现数据级并行、指令级并行以及数据局部性的优化时,存在众多不可控的因素。

技术实现思路

[0006]本专利技术的目的是提供一种面向异构众核后端基于代价模型的多面体优化方法,该面向异构众核后端基于代价模型的多面体优化方法首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间。
[0007]为达到上述目的,本专利技术采用的技术方案是:一种面向异构众核后端基于代价模
型的多面体优化方法,根据用户程序在函数模块上提供的编译标识,对用户程序中的多重循环实施优化,包括以下步骤:S1、编译器经过词法分析、语法分析,解析位于主核和从核上的用户程序的编译标识,生成对应的主核中间表示和从核中间表示,此主核中间表示和从核中间表示之间存在区分目标架构信息的三元组;S2、编译器中的多面体优化模块在循环边界约束条件下将语句实例表示成空间多面体,并通过这些空间多面体上的几何操作,对S1中生成的主核和从核的中间表示层代码进行分析和优化,具体包括以下步骤:S21、多面体优化模块中的静态控制单元检测遍扫描S1中获得的中间表示层代码,根据一定的限制条件,寻找符合条件的中间表示层代码片段,即静态控制单元,并将寻找到的静态控制单元加入到静态控制单元列表中;S22、多面体优化模块中的静态控制单元转换遍将S21中寻找到的满足一定限制条件的静态控制单元由中间表示形式转换为多维空间的多面体表示形式;S23、多面体优化模块中的依赖关系遍在S22中获得的静态控制单元的多面体表示形式内,根据循环迭代层次和访存顺序,计算S22中获得的多面体表示形式中多面体表示语句的依赖关系,并将其表示成带有依赖关系的多面体表示形式;S3、异构众核后端的代价模型对S22中静态控制单元的多面体表示形式是否实施多面体调度与优化方法进行收益评估,具体包括以下步骤:S31、编译器的异构众核后端代价模型模块根据S1中的中间表示三元组信息,确定使用主核或从核的后端特征信息,并根据S23中所得的依赖关系来计算S22中所得多面体表示形式进行多面体调度与优化的代价,获得多面体调度与优化前和多面体调度与优化后S22中多面体表示形式中的语句对应后端指令的拍数之和,并以整数代价的形式保存;S32、将S31中获得的转换前和转换后的整数代价作差与0进行比较,如果小于等于0,表示本次转换是没有收益的,此时多面体优化模块中的用于删除没有收益的静态控制单元的收益遍从S21中所述的静态控制单元列表中移除本次转换没有收益的静态控制单元,如果大于0,表示本次转换是有收益的,进入S4;S4、多面体优化模块中的代码生成遍对经过S32筛选获得的有收益的静态控制单元实施多面体调度与优化,生成新的中间表示,具体包括以下步骤:S41、多面体优化模块中的代码生成遍在对经过S32筛选获得的有收益的静态控制单元实施数据级并行过程中,获取后端主核或从核某一芯片的向量寄存器宽度,生成SIMD向量中间表示;S42、多面体优化模块中的代码生成遍在对经过S32筛选获得的有收益的静态控制单元实施指令级并行过程中,对S41中获得的SIMD向量中间表示进行展开,以充分利用芯片指令多发射的情况,并进一步减少循环回边所带来的指令跳转的开销,生成新的向量中间表示;S43、编译器中的多面体优化模块在程序自动变换同时,考虑来自于数据访存的数据的空间局部性,以提升数据访存的连续性;S5、编译器中的从中间表示阶段到汇编阶段的代码生成器完成中间表示层到主核或从核指令集的替换,将S42中生成的新的向量中间表示编译生成汇编文件,同时,编译器将汇编文件进一步生成可重定向文件;
S6、链接器将S5中的可重定向文件与库文件链接,生成可执行文件。
[0008]上述技术方案中进一步改进的方案如下:1. 上述方案中,用户程序的函数模块上提供的所述编译标识包括编译指导(Pragma)、函数属性(Attribute)或关键字(Keyword)。
[0009]2. 上述方案中,在S21中,所述限制条件在中间表示层,包括数组下标为线性表达式、不存在指针别名、有归纳变量、有良好的控制流、不含不能转化为select的控制流、不存在除可以函数调用向量化意外的函数调用(函数内联除外)。
[0010]3. 上述方案中,在S23中,通过调用线性整数规划过程(Integer Set Library)来计算S22中获得的多面体表示形式中多面体表示语句的依赖关系。
[0011]由于上述技术方案的运用,本专利技术与现有技术相比具有下列优点:本专利技术面向异构众核后端基于代价模型的多面体优化方法,其首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向异构众核后端基于代价模型的多面体优化方法,其特征在于:根据用户程序在函数模块上提供的编译标识,对用户程序中的多重循环实施优化,包括以下步骤:S1、编译器经过词法分析、语法分析,解析位于主核和从核上的用户程序的编译标识,生成对应的主核中间表示和从核中间表示,此主核中间表示和从核中间表示之间存在区分目标架构信息的三元组;S2、编译器中的多面体优化模块在循环边界约束条件下将语句实例表示成空间多面体,并通过这些空间多面体上的几何操作,对S1中生成的主核和从核的中间表示层代码进行分析和优化,具体包括以下步骤:S21、多面体优化模块中的静态控制单元检测遍扫描S1中获得的中间表示层代码,根据一定的限制条件,寻找符合条件的中间表示层代码片段,即静态控制单元,并将寻找到的静态控制单元加入到静态控制单元列表中;S22、多面体优化模块中的静态控制单元转换遍将S21中寻找到的满足一定限制条件的静态控制单元由中间表示形式转换为多维空间的多面体表示形式;S23、多面体优化模块中的依赖关系遍在S22中获得的静态控制单元的多面体表示形式内,根据循环迭代层次和访存顺序,计算S22中获得的多面体表示形式中多面体表示语句的依赖关系,并将其表示成带有依赖关系的多面体表示形式;S3、异构众核后端的代价模型对S22中静态控制单元的多面体表示形式是否实施多面体调度与优化方法进行收益评估,具体包括以下步骤:S31、编译器的异构众核后端代价模型模块根据S1中的中间表示三元组信息,确定使用主核或从核的后端特征信息,并根据S23中所得的依赖关系来计算S22中所得多面体表示形式进行多面体调度与优化的代价,获得多面体调度与优化前和多面体调度与优化后S22中多面体表示形式中的语句对应后端指令的拍数之和,并以整数代价的形式保存;S32、将S31中获得的转换前和转换后的整数代价作差与0进行比较,如果小于等于0,表示本次转换是没有收益的,此时多面体优化模块中的用于删除没有收益的静态控制单元的收益遍从S21中所述的静态控制单元列表中移除本次转换没有收...

【专利技术属性】
技术研发人员:漆锋滨周文浩沈莉肖谦黄驻峰管茂林
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

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

1