当前位置: 首页 > 专利查询>重庆大学专利>正文

一种多面体模型嵌套循环变换动态求解加速方法技术

技术编号:38579190 阅读:10 留言:0更新日期:2023-08-26 23:25
本发明专利技术提出一种多面体模型嵌套循环变换动态求解加速方法,包括,获取编译过程中的嵌套循环,根据嵌套循环创建有向无环图DAG;对DAG执行拓扑排序,将DAG转换为线性DAG结构;从线性DAG结构的首节点使用DP算法开始搜索循环融合/分割组合方案,得到线性DAG最佳的融合/分割方案对应的循环变换;将循环变换后端进行运行和映射尝试,完成全部编译。本发明专利技术提出的方法通过动态求解得到循环融合/分割方案得最佳方案,加速嵌套循环变换的求解过程,并最小化后端尝试次数找到优化的映射结果,提高嵌套循环的执行效率。循环的执行效率。循环的执行效率。

【技术实现步骤摘要】
一种多面体模型嵌套循环变换动态求解加速方法


[0001]本专利技术属于编译器优化和并行计算领域。

技术介绍

[0002]多面体模型(Polyhedral model)被广泛用于执行复杂的循环嵌套变换,其中数据访问函数和循环边界是封闭循环变量和参数的仿射组合。多面体模型通过将每个语句的实例视为一个定义明确的空间中的整数点,提供了一个强大的抽象来推理该循环嵌套上的转换。有了每个语句的这种表示和语句间或语句内相关性的精确表征,就有可能在完全依赖于线性代数和线性规划机器的数学环境中推理出复杂循环变换的正确性。最终在生成的嵌套循环中反映为重新排序的执行,具有改进的高速缓存局部性和/或已经并行化的循环。多面体模型求解循环变换,首先需要将程序转化为数据依赖图(Data Dependence Graph,DDG)并提出循环融合/分割的组合方案,然后在该循环融合/分割方案下,根据循环含有依赖和设定的目标函数进行仿射变换最终求得合法解。
[0003]循环融合/分割的组合方案会极大的影响融合后循环的执行性能,在传统方案中,通常会采用以下三种方式来解决这个问题。第一种方案会尽可能的将嵌套循环中的语句分开,使得每条语句成为独立的一个循环体,从而减少访问冲突。但是这种策略会导致代码重复,并且如果某些循环之间存在一些计算重叠的情况,即一个循环的计算结果可以用于下一个循环的计算中,那么该策略会导致程序性能没有得到最大程度的发挥。第二种方案是将尽可能多的循环合并成一个循环,以减少在计算机程序中重复执行同样的代码所消耗的时间和资源。然而,由于合并循环后的循环体可能很大,因此可能需要更多的内存来执行循环体,从而导致程序的性能下降。第三种方案是减少内存消耗和减少访问冲突的折中选择,它采取相同维度的语句合并,不同维度的拆分为不同循环体的策略。但是,该策略可能会导致额外的运算和内存读取次数,从而降低程序的运行效率。
[0004]传统方案均是通过不同策略得到某一种循环融合/分割的组合。一旦语句组合方案确定,嵌套循环的循环体个数和执行顺序就会固定。这些方案并没有探索其他语句之间的组合方案,这可能会导致错过循环融合/分割的组合的最优解。有些工作引入了对循环融合/分割的组合的探索,这些方法首先将嵌套循环所对应的DDG图转换为有向无环图(Directed Acyclic Graph,DAG)。然后,对该DAG执行拓扑排序生成线性排序结果。DAG排序结果再通过合并相邻节点来生成所有线性循环融合/分割方案。针对不同循环融合/分割组合方案,再经过其他循环变化后,通过增加后端上的性能预测,筛选出这些方案中最佳的线性循环融合/分割。但是通过性能预测的数值较为理想与实际值会有出入,导致预测的性能与实际的性能之间存在较大差距,从而错失最优解。另一种研究方法在保留上述探索循环融合/分割方案的同时,将预测的性能与实际的性能相结合。若性能预测得到的结果与实际的性能差距过大,它将进行重新返回到求解过程中进行下一次求解。该方法在把循环变换过程和实际映射过程结合起来,能找到更适合硬件的循环结构。但是,在求解过程中该方法存在大量重复的循环变换求解和性能预测,这些重复的操作带来不必要的开销。并且每次
性能不匹配导致返回到循环变换进行再次求解时,没有携带信息指导下一次循环求解,导致增加后端尝试次数。因此,本专利技术尝试在探索循环融合/分割方案的同时,将求解过程和实际映射过程结合,最小化后端尝试次数并加速求解过程。

技术实现思路

[0005]本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。
[0006]为此,本专利技术的目的在于提出一种多面体模型嵌套循环变换动态求解加速方法,用于在探索循环融合/分割方案时,减少重复求解循环变换和性能预测的开销,减少求解时间。
[0007]为达上述目的,本专利技术第一方面实施例提出了一种多面体模型嵌套循环变换动态求解加速方法,包括:
[0008]获取编译过程中的嵌套循环,根据所述嵌套循环创建有向无环图DAG;
[0009]对所述DAG执行拓扑排序,将所述DAG转换为线性DAG结构;
[0010]从所述线性DAG结构的首节点使用DP算法开始搜索循环融合/分割组合方案,得到所述线性DAG最佳的融合/分割方案对应的循环变换;
[0011]将所述循环变换后端进行运行和映射尝试,完成全部编译。
[0012]另外,根据本专利技术上述实施例的一种多面体模型嵌套循环变换动态求解加速方法还可以具有以下附加的技术特征:
[0013]进一步地,在本专利技术的一个实施例中,所述根据所述嵌套循环创建有向无环图DAG,包括:
[0014]将嵌套循环按照强连通分量SCC进行分类,同一SCC中的语句将合并到一个节点,所述节点视为数据依赖图DDG中的节点,若SCC之间存在依赖关系,所述依赖关系将视为DDG中节点之间的边;
[0015]将DDG图自身边消除,创建所述嵌套循环对应的有向无环图。
[0016]进一步地,在本专利技术的一个实施例中,所述从所述线性DAG结构的首节点使用DP算法开始搜索循环融合/分割组合方案,得到所述线性DAG最佳的融合/分割方案对应的循环变换,包括:
[0017]定义含有n个节点的线性DAG,动态规划DP的时间复杂度定义为Comp(n);
[0018]将一个新节点增加到具有n

1个节点的DAG中,包含所述新节点的新引入的融合方式的数量为n,则时间复杂度表示为:Comp(n)=Comp(n

1)+n=O(n2);
[0019]令mTime[n]表示前n个DAG节点循环融合/分割最少执行时间,performanceProfiling(x,y)表示DAG中编号为k+1到n的SCC融合后经过循环变换在后端执行的时间,则DP问题的状态转移方程表示为:
[0020][0021]当n=1时,mTime[n]表示第一个SCC循环变换后在硬件后端执行的时间;利用性能预测得到第一执行时间;
[0022]当n>1时,k为线性DAG的分割点,前n个DAG节点循环融合/分割的性能的组成包括第一部分和第二部分,其中所述第一部分表示前k个DAG节点循环融合/分割最少执行时间,
所述第二部分表示编号为k+1到n的SCC融合后,经过循环变换,利用性能预测得到第二执行时间;k表示在编号为k的SCC后进行循环分割,其中1≤k<n;
[0023]遍历所有可能的情况找到最短执行时间。
[0024]进一步地,在本专利技术的一个实施例中,所述将所述循环变换后端进行运行和映射尝试,完成全部编译,包括:
[0025]若所述线性DAG最佳的融合/分割方案对应的循环变换在后端执行的性能小于阈值,或者按照性能能够成功映射在整个硬件后端,则整个编译完成;
[0026]否则,通过后端实验得到真实的性能建立真实性能表rTime[n,m]:否则,通过后端实验得到真实的性能建立真实性能表rTime[n,m]:
[0027]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多面体模型嵌套循环变换动态求解加速方法,其特征在于,包括以下步骤:获取编译过程中的嵌套循环,根据所述嵌套循环创建有向无环图DAG;对所述DAG执行拓扑排序,将所述DAG转换为线性DAG结构;从所述线性DAG结构的首节点使用DP算法开始搜索循环融合/分割组合方案,得到所述线性DAG最佳的融合/分割方案对应的循环变换;将所述循环变换后端进行运行和映射尝试,完成全部编译。2.根据权利要求1所述的方法,其特征在于,所述根据所述嵌套循环创建有向无环图DAG,包括:将嵌套循环按照强连通分量SCC进行分类,同一SCC中的语句将合并到一个节点,所述节点视为数据依赖图DDG中的节点,若SCC之间存在依赖关系,所述依赖关系将视为DDG中节点之间的边;将DDG图自身边消除,创建所述嵌套循环对应的有向无环图。3.根据权利要求1所述的方法,其特征在于,所述从所述线性DAG结构的首节点使用DP算法开始搜索循环融合/分割组合方案,得到所述线性DAG最佳的融合/分割方案对应的循环变换,包括:定义含有n个节点的线性DAG,动态规划DP的时间复杂度定义为Comp(n);将一个新节点增加到具有n

1个节点的DAG中,包含所述新节点的新引入的融合方式的数量为n,则时间复杂度表示为:Comp(n)=Comp(n

1)+=O(n2);令mTime[n]表示前n个DAG节点循环融合/分割最少执行时间,performanceProfiling(x,y)表示DAG中编号为k+1到n的SCC融合后经过循环变换在后端执行的时间,则DP问题的状态转移方程表示为:当n=1时,mTime[n]表示第一个SCC循环变换后在硬件后端执行的时间;利用性能预测得到第一执行时间;当n>1时,k为线性DAG的分割点,前n个DAG节点循环融合/分割的性能的组成包括第一部分和第二部分,其中所述第一部分表示前k个DAG节点循环融合/分割最少执行时间,所述第二部分表示编号为k+1到n的SCC融合后,经过循环变换,利用性能预测得到第二执行时间;k表示在编号为k的SCC后进行循环分割,其中1≤k<n;遍历所有可能的情况找到最短执行时间。4.根据权利要求1所述的方法,其特征在于,所述将所述循环变换后端进行运行和映射尝试,完成全部编译,包括:若所述线性DAG最佳的融合/分割方案对应的循环变换在后端执行的性能小于阈值,或者按照性能能够成功映射在整个硬件后端,则整个编译完成;否则,通过后端实验得到真实的性能建立真实性能表rTime[n,m]:否则,通过后端实验得到真实的性能建立真实性能表rTime[n,m]:仅利用表rTime[n,m]表和表mTime[n]进行再次探索,开始再次求解,从表rTime[n,m]
表和表mTime[n]中得到最佳的融合/分割方案,导出新的循环变换,将新的循环变换交给后端进行尝试,直到成功。5.一种多面体模型嵌套循环变换动态求解加速装置,其特征在于,包括以下模块:创建模块,用于获取编译过程中的嵌套循环,根据所述嵌套循环创建有向无环图DAG;排序模块,用于...

【专利技术属性】
技术研发人员:莫星宇刘大江
申请(专利权)人:重庆大学
类型:发明
国别省市:

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

1