CN112558977A - 面向异构众核后端基于代价模型的多面体优化方法 - Google Patents

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

Info

Publication number
CN112558977A
CN112558977A CN201910910502.0A CN201910910502A CN112558977A CN 112558977 A CN112558977 A CN 112558977A CN 201910910502 A CN201910910502 A CN 201910910502A CN 112558977 A CN112558977 A CN 112558977A
Authority
CN
China
Prior art keywords
polyhedron
core
optimization
intermediate representation
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910910502.0A
Other languages
English (en)
Other versions
CN112558977B (zh
Inventor
漆锋滨
周文浩
沈莉
肖谦
黄驻峰
管茂林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910910502.0A priority Critical patent/CN112558977B/zh
Publication of CN112558977A publication Critical patent/CN112558977A/zh
Application granted granted Critical
Publication of CN112558977B publication Critical patent/CN112558977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

面向异构众核后端基于代价模型的多面体优化方法
技术领域
本发明涉及一种面向异构众核后端基于代价模型的多面体优化方法,属于编译器优化技术领域。
背景技术
为了解决处理器提高主频而导致的功耗问题,同时,随着处理器架构的发展,单个芯片上集成多个核心的多核处理器已经随处可见,无论是大型机还是个人工作站都集成或多或少的加速核心。随着计算需求的提升我们需要更多的加速部件来提升我们的计算能力,片上异构众核架构便是其中之一。由于异构众核架构不同于多核架构,除了为了充分发挥片上核心计算能力而必须考虑程序并行性之外,由片上存储导致的数据局部性也成为众核程序优化的难点。此外,单核程序移植到众核上的任务也越来越艰巨。所以无论是开发并行程序还是实现传统单核应用程序的移植任务,都需要开发人员深入了解众核异构的目标特征信息,所以开发的难度高并且效率低。
传统的并行化编译器中虽然实现了程序自动变换技术,但由于程序自动变换技术分类多而复杂,传统并行化编译器所采用的变换模型存在诸多问题。例如,(1)传统并行化编译器只能处理完美嵌套循环;(2)传统并行化编译器只能表示循环展开和压紧、交换、反转、倾斜等优化,难以实现循环分块、合并、分布等优化;(3)传统并行化编译器一次只能实现一种变换技术;(4)传统并行化编译器难以组合多种变换技术的执行顺序,难以计算多种变换技术同时使用的总体收益。目前的多面体模型在主流编译器中也有应用,如GCC的Graphite框架,LLVM的Polly模块,不过这些多面体模型都是当作编译遍或者模块嵌入到通用编译器中。这些多面体模型的应用都集中在多核版本上。
由于片上异构主核和从核存在差异,片上异构众核架构在实现程序自动变换技术时,如果采用片上同构的变换模型可能会导致向量寄存器不能充分利用,流水线不能完全充满,数据载入不对齐等问题。因此对于片上主核和从核存在诸多差的异构众核架构来说,多面体编译技术并不能兼容主核和从核的差异,这势必会影响片上核心计算能力。
传统并行编译器优化技术针对数据级并行、指令集并行以及数据局部性优化的实现上存在众多不足之处。多面体优化技术虽然能够弥补这些不足,但是众核平台上由于主核和从核的指令集、寄存器、计算单元等有很大差别,因此在众核平台上实现数据级并行、指令级并行以及数据局部性的优化时,存在众多不可控的因素。
发明内容
本发明的目的是提供一种面向异构众核后端基于代价模型的多面体优化方法,该面向异构众核后端基于代价模型的多面体优化方法首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间。
为达到上述目的,本发明采用的技术方案是:一种面向异构众核后端基于代价模型的多面体优化方法,根据用户程序在函数模块上提供的编译标识,对用户程序中的多重循环实施优化,包括以下步骤:
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中的可重定向文件与库文件链接,生成可执行文件。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,用户程序的函数模块上提供的所述编译标识包括编译指导(Pragma)、函数属性(Attribute)或关键字(Keyword)。
2. 上述方案中,在S21中,所述限制条件在中间表示层,包括数组下标为线性表达式、不存在指针别名、有归纳变量、有良好的控制流、不含不能转化为select的控制流、不存在除可以函数调用向量化意外的函数调用(函数内联除外)。
3. 上述方案中,在S23中,通过调用线性整数规划过程(Integer Set Library)来计算S22中获得的多面体表示形式中多面体表示语句的依赖关系。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向异构众核后端基于代价模型的多面体优化方法,其首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间;
通过编译指导、函数属性或关键字区分在片上异构主核和从核上的多面体编译模块,解决了传统并行编译器程序自动变换技术存在的不足,提升了多重循环嵌套的数据存储局部性以及生成代码的并行性,充分发挥片上主核以及从核的性能;
同时主核和从核对应的后端代价模型会结合自身的指令集特征来获取相应的寄存器长度、向量数据类型的数据对齐等,来评估多面体优化模块的收益,实现适合各自模块的最优的程序变换策略,主核和从核采用相互独立的代价模型计算多面体优化模块的收益,生成的代码更符合各自后端的特征,解决了片上由于主核和从核差异导致程序变换之后片上计算能力下降的问题。
附图说明
附图1为本发明面向异构众核后端基于代价模型的多面体优化方法流程示意图;
附图2为本发明面向异构众核后端基于代价模型的多面体优化方法流程图;
附图3为不加编译标示默认缺省生成的主核端代码。
具体实施方式
实施例:一种面向异构众核后端基于代价模型的多面体优化方法,根据用户程序在函数模块上提供的编译标识,对用户程序中的多重循环实施优化,包括以下步骤:
S1、编译器经过词法分析、语法分析,解析位于主核和从核上的用户程序的编译标识,生成对应的主核中间表示和从核中间表示,此主核中间表示和从核中间表示之间存在区分目标架构信息的三元组;
S2、编译器中的多面体优化模块在循环边界约束条件下将语句实例表示成空间多面体,并通过这些空间多面体上的几何操作,对S1中生成的主核和从核的中间表示层代码进行分析和优化,基于以下模块:
静态控制单元检测遍:在中间表示层代码中寻找但入口单出口的中间表示层代码区域,该区域是控制流图的子图,一个静态控制单元是静态控制单元检测遍发掘的控制流图的区域子图,即中间表示层代码片段;
静态控制单元转换遍:将静态控制单元检测遍发掘到的静态控制单元由中间表示形式转换为多维空间的多面体表示形式;
依赖关系遍:在静态控制单元转换遍生成的多维空间的多面体表示形式中计算每一个静态控制单元内的依赖关系;
用于移除没有收益的静态控制单元的收益遍:移除实施多面体调度与优化没有收益的静态控制单元;
代码生成遍:将进行多面体优化与调度之后的多面体表示形式重新转换为中间表示层代码;
具体包括以下步骤:
S21、多面体优化模块中的静态控制单元检测遍扫描S1中获得的中间表示层代码,根据一定的限制条件,寻找符合条件的中间表示层代码片段,即静态控制单元,并将寻找到的静态控制单元加入到静态控制单元列表中;
S22、多面体优化模块中的静态控制单元转换遍将S21中寻找到的满足一定限制条件的静态控制单元由中间表示形式转换为多维空间的多面体表示形式;
S23、多面体优化模块中的依赖关系遍在S22中获得的静态控制单元的多面体表示形式内,根据循环迭代层次和访存顺序,计算S22中获得的多面体表示形式中多面体表示语句的依赖关系,并将其表示成带有依赖关系的多面体表示形式;
S3、异构众核后端的代价模型对S22中静态控制单元的多面体表示形式是否实施多面体调度与优化方法进行收益评估,具体包括以下步骤:
编译器的异构众核后端代价模型模块是根据主核或从核后端特征信息而实现的编译遍,用来计算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中的可重定向文件与库文件链接,生成可执行文件。
上述用户程序的函数模块上提供的所述编译标识包括编译指导(Pragma)、函数属性(Attribute)或关键字(Keyword)。
在S21中,所述限制条件在中间表示层,包括数组下标为线性表达式、不存在指针别名、有归纳变量、有良好的控制流、不含不能转化为select的控制流、不存在除可以函数调用向量化意外的函数调用(函数内联除外)。
在S23中,通过调用线性整数规划过程(Integer Set Library)来计算S22中获得的多面体表示形式中多面体表示语句的依赖关系。
实施例进一步解释如下:
1、本发明组成部分
本发明具体流程如图1所示。
主要包括解析主核或从核编译标识;多面体编译技术分析;异构众核后端代价模型多面体编译模块转换收益评估;对有收益的多面体编译模块进行程序自动变换生成新的中间表示;后端代码生成器完成中间表示到主核或从核指令集的替换;链接生成可执行文件。
本发明对用户程序能够进行自动识别主从核编译模块,使主从核协同工作完成用户程序模块内多重循环嵌套的自动变换,也可以通过独立主核或独立从核完成用户程序多面体模块内多重循环嵌套的自动变换。
该功能实现需要用户编写程序时在函数模块上提供标识(Pragma或Attribute或Keyword)。
实现流程:
(1)解析主核(缺省为主核)或从核编译标识。
1、Pragma;
2、Attribute;
3、Keyword。
(2)多面体模块编译技术分析。
1、在多面体编译模块内寻找静态控制单元;
2、将静态控制单元转换为多维空间多面体表示形式;
3、计算多面体表示形式中程序语句的依赖关系。
(3)异构众核后端代价模型多面体编译模块转换收益评估。
1、异构众核后端代价模型根据编译标识确定使用主核或从核后端特征信息计算该转换的代价;
2、删除没有收益的多面体编译模块,该模块将不进行程序自动变换。
(4)对有收益的多面体编译模块进行程序自动变换生成新的中间表示。
1、数据级并行充分使用主核或从核的向量寄存器宽度;
2、指令集并行对向量中间表示进行展开;
3、多面体编译模块分析及自动变换的同时考虑了数据的局部性。
(5)后端代码生成器完成中间表示到主核或从核指令集的替换。
(6)链接生成可执行文件。
2、本发明的适应面实例
(1)独立主核
如果不加编译标示则默认缺省生成主核端代码。
(2)独立从核
独立从核需要增加编译标示。
(3)主核与从核协同工作
采用上述面向异构众核后端基于代价模型的多面体优化方法时,其首次提出并实现了片上异构众核的程序多面体优化自动变换方法,并加入了主核和从核独立的代价模型计算框架,保证了在有收益的前提下进行程序变换以节省程序的编译时间;
通过编译指导、函数属性或关键字区分在片上异构主核和从核上的多面体编译模块,解决了传统并行编译器程序自动变换技术存在的不足,提升了多重循环嵌套的数据存储局部性以及生成代码的并行性,充分发挥片上主核以及从核的性能;
同时主核和从核对应的后端代价模型会结合自身的指令集特征来获取相应的寄存器长度、向量数据类型的数据对齐等,来评估多面体优化模块的收益,实现适合各自模块的最优的程序变换策略,主核和从核采用相互独立的代价模型计算多面体优化模块的收益,生成的代码更符合各自后端的特征,解决了片上由于主核和从核差异导致程序变换之后片上计算能力下降的问题。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
异构众核:采用新型的片上异构融合体系结构。
代价模型:在多数情况下程序自动变换技术不仅是没有收益的还会增加程序的编译时间。代价模型使用特定后端的架构支持的指令集的不同操作的代价来尽可能预测期望的加速比。只有代价模型评估有收益的自动变换技术才会被实施。
多面体优化技术:在循环边界约束条件下将语句实例表示成空间多面体并通过这些空间多面体上的几何操作来分析和优化程序的程序自动变换技术。
静态控制单元:控制流图中单入口单出口的区域。
遍:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (4)

1.一种面向异构众核后端基于代价模型的多面体优化方法,其特征在于:根据用户程序在函数模块上提供的编译标识,对用户程序中的多重循环实施优化,包括以下步骤:
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中的可重定向文件与库文件链接,生成可执行文件。
2.根据权利要求1所述的面向异构众核后端基于代价模型的多面体优化方法,其特征在于:用户程序的函数模块上提供的所述编译标识包括编译指导(Pragma)、函数属性(Attribute)或关键字(Keyword)。
3.根据权利要求1所述的面向异构众核后端基于代价模型的多面体优化方法,其特征在于:在S21中,所述限制条件在中间表示层,包括数组下标为线性表达式、不存在指针别名、有归纳变量、有良好的控制流、不含不能转化为select的控制流、不存在除可以函数调用向量化意外的函数调用(函数内联除外)。
4. 根据权利要求1所述的面向异构众核后端基于代价模型的多面体优化方法,其特征在于:在S23中,通过调用线性整数规划过程(Integer Set Library)来计算S22中获得的多面体表示形式中多面体表示语句的依赖关系。
CN201910910502.0A 2019-09-25 2019-09-25 面向异构众核后端基于代价模型的多面体优化方法 Active CN112558977B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910910502.0A CN112558977B (zh) 2019-09-25 2019-09-25 面向异构众核后端基于代价模型的多面体优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910910502.0A CN112558977B (zh) 2019-09-25 2019-09-25 面向异构众核后端基于代价模型的多面体优化方法

Publications (2)

Publication Number Publication Date
CN112558977A true CN112558977A (zh) 2021-03-26
CN112558977B CN112558977B (zh) 2022-11-15

Family

ID=75029161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910910502.0A Active CN112558977B (zh) 2019-09-25 2019-09-25 面向异构众核后端基于代价模型的多面体优化方法

Country Status (1)

Country Link
CN (1) CN112558977B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217807A (zh) * 2021-04-09 2022-03-22 无锡江南计算技术研究所 一种基于异构众核架构的直接内存访问编译优化方法
CN116185426A (zh) * 2023-04-17 2023-05-30 北京大学 一种基于代码融合的编译优化方法、系统及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090083724A1 (en) * 2007-09-26 2009-03-26 Eichenberger Alexandre E System and Method for Advanced Polyhedral Loop Transformations of Source Code in a Compiler
CN102981836A (zh) * 2012-11-06 2013-03-20 无锡江南计算技术研究所 异构系统的编译方法和编译器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090083724A1 (en) * 2007-09-26 2009-03-26 Eichenberger Alexandre E System and Method for Advanced Polyhedral Loop Transformations of Source Code in a Compiler
CN102981836A (zh) * 2012-11-06 2013-03-20 无锡江南计算技术研究所 异构系统的编译方法和编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
N.A.B. SANKAR CHEBOLU 等: "《A novel scheme for Compiler Optimization Framework》", 《2015 INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTING, COMMUNICATIONS AND INFORMATICS (ICACCI)》 *
赵捷 等: "《基于多面体模型的编译"黑魔法"》", 《软件学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217807A (zh) * 2021-04-09 2022-03-22 无锡江南计算技术研究所 一种基于异构众核架构的直接内存访问编译优化方法
CN114217807B (zh) * 2021-04-09 2024-04-30 无锡江南计算技术研究所 一种基于异构众核架构的直接内存访问编译优化方法
CN116185426A (zh) * 2023-04-17 2023-05-30 北京大学 一种基于代码融合的编译优化方法、系统及电子设备
CN116185426B (zh) * 2023-04-17 2023-09-19 北京大学 一种基于代码融合的编译优化方法、系统及电子设备

Also Published As

Publication number Publication date
CN112558977B (zh) 2022-11-15

Similar Documents

Publication Publication Date Title
Fahringer Automatic performance prediction of parallel programs
Hiranandani et al. An overview of the fortran d programming system
Wu et al. Red fox: An execution environment for relational query processing on gpus
Zhao et al. Optimizing the memory hierarchy by compositing automatic transformations on computations and data
Rauchwerger Run-time parallelization: Its time has come
CN103329097A (zh) 工具生成器
CN112558977B (zh) 面向异构众核后端基于代价模型的多面体优化方法
Wahib et al. Automated GPU kernel transformations in large-scale production stencil applications
Xing et al. An in-depth comparison of compilers for deep neural networks on hardware
Zheng et al. Neoflow: A flexible framework for enabling efficient compilation for high performance dnn training
Lueh et al. C-for-metal: High performance simd programming on intel gpus
Kennedy et al. The rise and fall of high performance fortran
Luk et al. A high-level compilation toolchain for heterogeneous systems
Cordes et al. Multi-objective aware extraction of task-level parallelism using genetic algorithms
Zheng et al. Bladedisc: Optimizing dynamic shape machine learning workloads via compiler approach
Liu et al. Improving the performance of OpenMP by array privatization
Benoit et al. Using an intermediate representation to map workloads on heterogeneous parallel systems
Jing et al. An Automatic Task Partition Method for Multi-core System
Kalyur et al. CALIPER: a coarse grain parallel performance estimator and predictor
Corral-García et al. Towards automatic parallelization of sequential programs and efficient use of resources in HPC centers
Reissmann Principles, Techniques, and Tools for Explicit and Automatic Parallelization
Gao et al. swatop: Automatically optimizing deep learning operators on sw26010 many-core processor
Palermo et al. Dynamic data partitioning for distributed-memory multicomputers
Qiu et al. Optimization of Tensor Operation in Compiler
Brown et al. Fortran performance optimisation and auto-parallelisation by leveraging MLIR-based domain specific abstractions in Flang

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant