CN103106067A - 处理器循环映射的优化方法及系统 - Google Patents

处理器循环映射的优化方法及系统 Download PDF

Info

Publication number
CN103106067A
CN103106067A CN201310066541XA CN201310066541A CN103106067A CN 103106067 A CN103106067 A CN 103106067A CN 201310066541X A CN201310066541X A CN 201310066541XA CN 201310066541 A CN201310066541 A CN 201310066541A CN 103106067 A CN103106067 A CN 103106067A
Authority
CN
China
Prior art keywords
lineoid
optimization
dependence
processor
rightarrow
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
CN201310066541XA
Other languages
English (en)
Other versions
CN103106067B (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.)
Beijing Qingwei Intelligent Technology Co., Ltd.
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN201310066541.XA priority Critical patent/CN103106067B/zh
Publication of CN103106067A publication Critical patent/CN103106067A/zh
Application granted granted Critical
Publication of CN103106067B publication Critical patent/CN103106067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提出一种处理器循环映射的优化方法及系统。其中,方法包括以下步骤:获取循环程序阵列,并对循环程序阵列进行处理以获得循环程序阵列中语句之间的依赖关系和变换关系;对依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,第一超平面和第二超平面相互独立;以及根据第一超平面和第二超平面将循环程序阵列划分为多个块以完成对处理器循环映射的优化。根据本发明实施例的方法,通过循环程序阵列中语句之间的依赖关系和变换关系生成两个超平面,并通过该超平面对循环程序进行划分,从而提高了阵列的处理单元利用率减少了运算次数,同时降低了阵列之间的通信量,减少数据的载入和存储时间。

Description

处理器循环映射的优化方法及系统
技术领域
本发明涉及循环程序处理技术领域,特别涉及一种处理器循环映射的优化方法及系统。
背景技术
在现代实际生活应用程序中(例如:声音、图像处理等应用),循环往往占据了这些程序的大部分运行时间。循环的特点是多次重复同一个计算内核,不改变运算的结构,只改变运算的数据。占用大量执行时间的循环被称为应用中的关键循环。处理关键循环可以大幅度的减少需要处理的循环数量,并且基本不影响最终加速的效果。而对于可重构阵列来说,一次配置多次执行的模式可以有效的降低配置的代价。因此提取出应用中的关键循环,并把它们映射到可重构阵列上执行可以降低映射的复杂度。因此,循环优化是可重构计算系统编译器的重要组成部分。
在通用处理器上循环优化的主要目的是增加计算的并行性和数据的局部性。通过循环变换,在不改变数据依赖的情况下寻求循环实例之间的并行性。同时,变换之后的更好的数据局部性也会降低Cache的缺失率,从而提高程序的运行性能。在图形处理器(GPU)上,循环优化又有不同的目标。一般GPU由多个Multiprocessor组成,每一个Multiprocessor又由多个SIMD组成,SIMD之间通过片上共享存储器进行数据交互,而Multiprocessor之间是通过片外的DRAM进行数据的通信。另外,每一个Multiprocessor拥有一些固定数量的寄存器堆。根据GPU系统存储器的不同的特点,循环优化的目标主要是增加片外DRAM的联合访问,减少片上共享存储器的访问bank冲突,增加计算的平行程度以及减少Multiprocessor内部的寄存器压力。
目前普遍使用的循环优化方法有多面体模型、循环展开和软件流水等。循环展开是将一个循环体代码复制多次,增大指令调度的空间,减少循环分支指令开销。通过此方式很难确定展开的次数,而且会使得代码量增加。软件流水是通过重叠不同循环实例之间的语句来增加执行的并行性,但是此方法只能处理单层循环,无法处理多循环体。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为达到上述目的,本发明一方面的实施例提出一种处理器循环映射的优化方法,包括以下步骤:获取循环程序阵列,并对所述循环程序阵列进行处理以获得所述循环程序阵列中语句之间的依赖关系和变换关系;对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,所述第一超平面和所述第二超平面相互独立;以及根据所述第一超平面和所述第二超平面将所述循环程序阵列划分为多个块以完成对所述处理器循环映射的优化。
根据本发明实施例的方法,通过循环程序阵列中语句之间的依赖关系和变换关系生成两个超平面,并通过该超平面对循环程序进行划分,从而提高了阵列的处理单元利用率减少了运算次数,同时降低了阵列之间的通信量,减少数据的载入和存储时间。
本发明的一个实例中,通过时间约束、空间约束和优化的方式对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面。
本发明的一个实例中,通过如下约束公式使所述第二超平面与所述第一超平面相互独立,其中,所述公式为:c1d2-c2d1>0orc1d2-c2d1<0,其中,c1和c2表示所述第一超平面的参数,d1和d2表示所述第二超平面的参数。
本发明的一个实例中,所述时间约束通过如下公式表示,
Figure BDA00002876660900021
Figure BDA00002876660900022
其中,
Figure BDA00002876660900023
Figure BDA00002876660900024
是分别表示依赖关系的变量,S为源语句,T为目标语句。Θ表示变量的线性组合,即 Θ ( i → ) = ( c 1 , c 2 ) · i → .
本发明的一个实例中,所述优化处理指通过所述时间约束和空间约束寻找最小的循环变换参数。
为达到上述目的,本发明的实施例另一方面提出一种处理器循环映射的优化系统,包括:获取模块,用于获取循环程序阵列,并对所述循环程序阵列进行处理以获得所述循环程序阵列中语句之间的依赖关系和变换关系;处理模块,用于对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,所述第一超平面和所述第二超平面相互独立;以及划分模块,用于根据所述第一超平面和所述第二超平面将所述循环程序阵列划分为多个块以完成对所述处理器循环映射的优化。
根据本发明实施例的系统,通过循环程序阵列中语句之间的依赖关系和变换关系生成两个超平面,并通过该超平面对循环程序进行划分,从而提高了阵列的处理单元利用率减少了运算次数,同时降低了阵列之间的通信量,减少数据的载入和存储时间。
本发明的一个实例中,通过时间约束、空间约束和优化的方式对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面。
本发明的一个实例中,通过如下约束公式使所述第二超平面与所述第一超平面相互独立,其中,所述公式为:c1d2-c2d1>0or c1d2-c2d1<0,其中,c1和c2表示所述第一超平面的参数,d1和d2表示所述第二超平面的参数。
本发明的一个实例中,所述时间约束通过如下公式表示,
Figure BDA00002876660900032
其中,
Figure BDA00002876660900033
Figure BDA00002876660900034
是分别表示依赖关系的变量,S为源语句,T为目标语句。Θ表示变量的线性组合,即 Θ ( i → ) = ( c 1 , c 2 ) · i → .
本发明的一个实例中,所述优化处理指通过所述时间约束和空间约束寻找最小的循环变换参数。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的处理器循环映射的优化方法的流程图;
图2为根据本发明一个实施例的循环程序中原始迭代空间的示意图;
图3为根据本发明一个实施例的循环程序的分块示意图;
图4为根据本发明一个实施例的分块被映射到RCA的示意图;以及
图5为根据本发明一个实施例的处理器循环映射的优化系统的框架图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图1为根据本发明一个实施例的处理器循环映射的优化方法的流程图。如图1所示,根据本发明实施例的处理器循环映射的优化方法,包括以下步骤:
步骤S101,获取循环程序阵列,并对循环程序阵列进行处理以获得循环程序阵列中语句之间的依赖关系和变换关系。
具体地,获取所要处理的循环程序,并将其转化为多面体表示。该转换方法可以用Clan(the Chunky loop analyzer)工具把高级语言中(C,C++)的循环抽象并转换成多面体的中间表示。在循环的多面体中间表示的基础上,我们也用现有的工具Candl(theChunky analyzer for dependences in loops)来精确地分析循环的依赖关系。在本发明中只分析写后写,写后读和读后写依赖。经过处理便可得到数据依赖图(DDG)。DDG是一个有向图。图中每一个顶点代表一条语句,每一条边代表语句之间的依赖。例如,从顶点Si到Sj的边e∈E表示从语句Si的动态实例到Sj的动态实例的数据依赖。这个可以精确的数据依赖信息就可以通过依赖多面体Pe表示出来。在依赖多面体中,把数据依赖的目标迭代向量映射到该数据依赖的源迭代向量
Figure BDA00002876660900042
的转换叫做h变换,得到变换关系,如此便有
Figure BDA00002876660900043
Figure BDA00002876660900044
成立。通过分析,可以得到循环中的每一组语句之间的依赖
Figure BDA00002876660900045
以及从
Figure BDA00002876660900046
Figure BDA00002876660900047
的变换关系。
在本发明的一个实施例中,采用REMUS对循环程序进行处理,REMUS是一个可重构多媒体处理器,它的每一个RPU拥有四个8X8的RCA阵列,其工作频率为200MHz。为了展示出基于多面体模型的循环优化的具体过程,这里我们以理想的1-D Jacobi为例子,如下面的程序所示,
for(i=1;i<N;i++)
for(j=2;j<N-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1]+a[i-1][j+1];\\S1
对其进行处理可得到如下关系。
flow:a[i′][j′]→a[i-1][j]
h:i′=i-1,j′=j;D1:1≤i≤N-1,2≤j≤N-2
flow:a[i′][j′]→a[i-1][j-1]
h:i′=i-1,j′=j-1;D2:1≤i≤N-1,2≤j≤N-2
flow:a[i′][j′]→a[i-1][j+1]
h:i′=i-1,j′=j+1;D3:1≤i≤N-1,2≤j≤N-2。
步骤S102,对依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,第一超平面和第二超平面相互独立。
具体地,在RCA内部数据依赖是有限制的,按照控制顺序,Pe的执行顺序是一行接一行的。因此我们要寻找第一超平面Θ使得所有的依赖都至少跨越一层超平面,因此时间控制限制条件可以描述为,
Figure BDA00002876660900048
Figure BDA00002876660900049
其中,
Figure BDA000028766609000410
Figure BDA000028766609000411
是分别表示依赖关系的变量,Pe表示依赖多面体。通过公式推导出一个优化目标公式可表示为, &delta; e ( i &RightArrow; T ) = &Theta; ( i &RightArrow; T ) - &Theta; ( h e ( i &RightArrow; T ) ) , i &RightArrow; T &Element; P e , 其中,he表示变换关系,Θ表示变量的线性组合,
Figure BDA000028766609000414
表示依赖e所跨越的超平面Θ的层数。再通过边界函数的方法优化目标,使循环变量在全局参数的控制范围之内,优化函数可表示为,
Figure BDA000028766609000416
其中,w表示一个边界函数v的常量项,
Figure BDA000028766609000417
表示循环中所有的常量参数,
Figure BDA000028766609000418
表示一个向量。最后,根据寻找minimize<(w,c1,c2)的最小词典序得到最优的循环变换参数,并利用上述约束生成第一超平面。
在本发明的一个实施例中,得到第一超平面之后,我们接下来就要寻找一个独立于第一超平面的第二超平面来划分一个二维的嵌套循环。第二超平面与第一超平面不同,第二超平面是用来分割RCA的不同列,因此没有时间上的执行先后顺序要求。其空间约束可以表示为,
Figure BDA00002876660900051
Figure BDA00002876660900052
其中,
Figure BDA00002876660900054
是分别表示依赖关系的变量,S为源语句,T为目标语句,Π表示迭代变量的线性组合,即
Figure BDA00002876660900055
且d1和d2为不为0的整数,Pe表示依赖多面体。
在本发明的一个实施例中,通过上述时间约束和空间约束条件,限制两个超平面将嵌套循环进行分块,同时保证“块”与“块”之间只有单向的数据依赖,使得“块”在RCA上面合法执行。为了保证第二超平面Π与第一超平面Θ相互独立,通过两个超平面的变换系数进行约束,其约束表示为,c1d2-c2d1>0or c1d2-c2d1<0,其中,c1和c2表示第一超平面的参数,d1和d2表示第二超平面的参数。再通过边界函数的方法优化目标,使循环变量在全局参数
Figure BDA00002876660900056
的控制范围之内,优化函数可表示为,
Figure BDA00002876660900057
其中,w'表示一个边界函数v的常量项,
Figure BDA00002876660900058
表示循环中所有的常量参数,
Figure BDA00002876660900059
表示一个向量。最后,根据寻找minimizc<(w′,d1,d2)的最小词典序得到最优的循环变换参数,并利用上述时间约束、空间约束和超平面的系数约束生成第二超平面。
在寻找超平面Π的过程中,改变约束(1),新增加正交约束(6),按照寻找超平面Θ的方法,应用PIP工具软件,我们就得出了超平面Π的变换系数(d1d2)了。
以上述for循环程序为例,语句之间得到依赖关系和转换关系之后,其约束可表示为,
(1) c i i + c j j - c i ( i - 1 ) - c j j &GreaterEqual; 1 &DoubleRightArrow; c i &GreaterEqual; 1 , 其边界约束是w-ci≥0,因为是一个常数依赖。
(2) c i i + c j j - c i ( i - 1 ) - c j ( j - 1 ) &GreaterEqual; 1 &DoubleRightArrow; c i + c j &GreaterEqual; 1 , 其边界约束是w-ci-cj≥0。
(3) c i i + c j j - c i ( i - 1 ) - c j ( j + 1 ) &GreaterEqual; 1 &DoubleRightArrow; c i - c j &GreaterEqual; 1 , 其边界约束是ω-ci+cj≥0。
归纳所有的约束和优化目标,可得到如下约束关系:
ci≥1
w-ci≥0
ci+cj≥1
w-ci-cj≥0
ci-cj≥1
w-ci+cj≥0
minimize<(w,ci,cj)。
向量(w,ci,cj)的词典序最小的是(1,1,0)。这样,我们得到ci=1,cj=0,即c1=1,c2=0。
第二超平面的也类似,加上空间划分约束和独立约束,按照寻找超平面Θ的方法即可得到第二超平面Π的变换参数其结果为,ci=1,cj=0,即d1=1,d2=0。
步骤S103,根据第一超平面和第二超平面将循环程序阵列划分为多个块以完成对处理器循环映射的优化。
具体地,通过所获得的第一超平面和第二超平面改变循环程序的PE阵列。由于循环体的规模是非常大的,而PE阵列往往是有限大小的,为了让一个大的嵌套循环在PE阵列上面去执行,就需要根据PE阵列的大小对嵌套循环进行分块以完成对处理器循环映射的优化。
现在我们就可以去确定分块的大小了。这里我们也以8X8的PE阵列为例,如果循环体语句只有一个算子,那么一次循环迭代就可以映射到一个PE上面去。实际上在很多情况下,循环体语句不只是一个算子。这种情况下,我们通过分析循环体语句内部的算子及其依赖情况就可以确定循环体语句的长宽比ζs/ηs,其中,ζs表示PE阵列的长,ηs表示PE阵列的宽。循环分块的长宽比L/W应该与语句的长宽比ζs/ηs成反比例。其循环
Ltile=LRCA/ζs
分块的大小通过如下公式获得,Wtile=WRcA/ηs,其中,LRCA表示可重构计算阵列(RCA)的长,WRCA表示可重构计算阵列(RCA)的宽。
图2为根据本发明一个实施例的循环程序中原始迭代空间的示意图。如图2所示,通过所获得的第一超平面和第二超平面改变循环程序的PE阵列,如图3所示。只有在循环网络边缘的分块,例如,T0、T1、T2和T4不是规则的,内部的分块,例如T3都是规则的。事实上,当循环的规模很大的时候,规则分块的数量是占绝大部分的比例。图4为根据本发明一个实施例的分块被映射到RCA的示意图。如图4所示,一个完整的规则的分块就被映射到一个RCA8X8上面去了,图4中带圈的"+"表示算子1,带网格的"+"表示算子2,带框的R表示临时寄存器。
根据本发明实施例的方法,通过循环程序阵列中语句之间的依赖关系和变换关系生成两个超平面,并通过该超平面对循环程序进行划分,从而提高了阵列的处理单元利用率减少了运算次数,同时降低了阵列之间的通信量,减少数据的载入和存储时间。
图5为根据本发明另一个实施例的处理器循环映射的优化系统的框架图。如图5所示,根据本发明实施例的处理器循环映射的优化系统包括获取模块100、处理模块200和划分模块300。
获取模块100用于获取循环程序阵列,并对循环程序阵列进行处理以获得循环程序阵列中语句之间的依赖关系和变换关系。
具体地,获取所要处理的循环程序,并将其转化为多面体表示。该转换方法可以用Clan(the Chunky loop analyzer)工具把高级语言中(C,C++)的循环抽象并转换成多面体的中间表示。在循环的多面体中间表示的基础上,我们也用现有的工具Candl(theChunky analyzer for dependences in loops)来精确地分析循环的依赖关系。在本发明中只分析写后写,写后读和读后写依赖。经过处理便可得到数据依赖图(DDG)。DDG是一个有向图。图中每一个顶点代表一条语句,每一条边代表语句之间的依赖。例如,从顶点Si到Sj的边e∈E表示从语句Si的动态实例到Sj的动态实例的数据依赖。这个可以精确的数据依赖信息就可以通过依赖多面体Pe表示出来。在依赖多面体中,把数据依赖的目标迭代向量映射到该数据依赖的源迭代向量
Figure BDA00002876660900072
的转换叫做h变换,得到变换关系,如此便有
Figure BDA00002876660900073
Figure BDA00002876660900074
成立。通过分析,可以得到循环中的每一组语句之间的依赖
Figure BDA00002876660900075
以及从
Figure BDA00002876660900076
Figure BDA00002876660900077
的变换关系。
在本发明的一个实施例中,采用REMUS对循环程序进行处理,REMUS是一个可重构多媒体处理器,它的每一个RPU拥有四个8X8的RCA阵列,其工作频率为200MHz。为了展示出基于多面体模型的循环优化的具体过程,这里我们以理想的1-D Jacobi为例子,如下面的程序所示,
for(i=1;i<N;i++)
for(j=2;j<N-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1]+a[i-1][j+1];\\S1
对其进行处理可得到如下关系。
floω:a[i′][j′]→a[i-1][j]
h:i′=i-1,j′=j;D1:1≤i≤N-1,2≤j≤N-2
flow:a[i′][j′]→a[i-1][j-1]
h:i′=i-1,j′=j-1;D2:1≤i≤N-1,2≤j≤N-2
flow:a[i′][j′]→a[i-1][j+1]
h:i′=i-1,j′=j+1;D3:1≤i≤N-1,2≤j≤N-2。
处理模块200用于对依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,第一超平面和第二超平面不重合。
具体地,在RCA内部数据依赖是有限制的,按照控制顺序,Pe的执行顺序是一行接一行的。因此我们要寻找第一超平面Θ使得所有的依赖都至少跨越一层超平面,因此时间控制限制条件可以描述为,
Figure BDA00002876660900078
其中,
Figure BDA000028766609000711
是分别表示依赖关系的变量,Pe表示依赖多面体。通过公式推导出一个优化目标公式可表示为,
Figure BDA000028766609000712
其中,he表示变换关系,Θ表示变量的线性组合,
Figure BDA000028766609000714
表示依赖e所跨越的超平面Θ的层数。再通过边界函数的方法优化目标,使循环变量在全局参数
Figure BDA000028766609000715
的控制范围之内,优化函数可表示为,其中,w表示一个边界函数v的常量项,
Figure BDA000028766609000717
表示循环中所有的常量参数,
Figure BDA000028766609000718
表示一个向量。最后,根据寻找minimize<(w,c1,c2)的最小词典序得到最优的循环变换参数,并利用上述约束生成第一超平面。
在本发明的一个实施例中,得到第一超平面之后,我们接下来就要寻找一个独立于第一超平面的第二超平面来划分一个二维的嵌套循环。第二超平面与第一超平面不同,第二超平面是用来分割RCA的不同列,因此没有时间上的执行先后顺序要求。其空间约束可以表示为,
Figure BDA00002876660900081
Figure BDA00002876660900082
其中,
Figure BDA00002876660900083
Figure BDA00002876660900084
是分别表示依赖关系的变量,S为源语句,T为目标语句,Π表示迭代变量的线性组合,即
Figure BDA00002876660900085
且d1和d2为不为0的整数,Pe表示依赖多面体。
在本发明的一个实施例中,通过上述时间约束和空间约束条件,限制两个超平面将嵌套循环进行分块,同时保证“块”与“块”之间只有单向的数据依赖,使得“块”在RCA上面合法执行。为了保证第二超平面Π与第一超平面Θ相互独立,通过两个超平面的变换系数进行约束,其约束表示为,c1d2-c2d1>0or c1d2-c2d1<0,其中,c1和c2表示第一超平面的参数,d1和d2表示第二超平面的参数。再通过边界函数的方法优化目标,使循环变量在全局参数
Figure BDA00002876660900086
的控制范围之内,优化函数可表示为,
Figure BDA00002876660900087
其中,w'表示一个边界函数v的常量项,
Figure BDA00002876660900088
表示循环中所有的常量参数,
Figure BDA00002876660900089
表示一个向量。最后,根据寻找ninimize<(w′,d1,d2)的最小词典序得到最优的循环变换参数,并利用上述时间约束、空间约束和超平面的系数约束生成第二超平面。
在寻找超平面Π的过程中,改变约束(1),新增加正交约束(6),按照寻找超平面Θ的方法,应用PIP工具软件,我们就得出了超平面Π的变换系数(d1d2)了。
以上述for循环程序为例,语句之间得到依赖关系和转换关系之后,其约束可表示为,
(1) c i i + c j j - c i ( i - 1 ) - c j j &GreaterEqual; 1 &DoubleRightArrow; c i &GreaterEqual; 1 , 其边界约束是w-ci≥0,因为是一个常数依赖。
(2) c i i + c j j - c i ( i - 1 ) - c j ( j - 1 ) &GreaterEqual; 1 &DoubleRightArrow; c i + c j &GreaterEqual; 1 , 其边界约束是w-ci-cj≥0。
(3) c i i + c j j - c i ( i - 1 ) - c j ( j + 1 ) &GreaterEqual; 1 &DoubleRightArrow; c i - c j &GreaterEqual; 1 , 其边界约束是ω-ci+cj≥0。
归纳所有的约束和优化目标,可得到如下约束关系:
ci≥1
w-ci≥0
ci+cj≥1
w-ci-cj≥0
ci-cj≥1
w-ci+cj≥0
minimize<(w,ci,cj)。
向量(w,ci,cj)的词典序最小的是(1,1,0)。这样,我们得到ci=1,cj=0,即c1=1,c2=0。
第二超平面的也类似,加上空间划分约束和独立约束,按照寻找超平面Θ的方法即可得到第二超平面Π的变换参数其结果为,ci=1,cj=0,即d1=1,d2=0。
划分模块300用于根据第一超平面和第二超平面将循环程序阵列划分为多个块以完成对处理器循环映射的优化。
具体地,通过所获得的第一超平面和第二超平面改变循环程序的PE阵列。由于循环体的规模是非常大的,而PE阵列往往是有限大小的,为了让一个大的嵌套循环在PE阵列上面去执行,就需要根据PE阵列的大小对嵌套循环进行分块以完成对处理器循环映射的优化。
现在我们就可以去确定分块的大小了。这里我们也以8X8的PE阵列为例,如果循环体语句只有一个算子,那么一次循环迭代就可以映射到一个PE上面去。实际上在很多情况下,循环体语句不只是一个算子。这种情况下,我们通过分析循环体语句内部的算子及其依赖情况就可以确定循环体语句的长宽比ζs/ηs,其中,ζs表示PE阵列的长,ηs表示PE阵列的宽。循环分块的长宽比L/W应该与语句的长宽比ζs/ηs成反比例。其循环
Ltile=LRCA/ζs
分块的大小通过如下公式获得,Wtile=WRCA/ηs,其中,LRCA表示可重构计算阵列(RCA)的长,WRCA表示可重构计算阵列(RCA)的宽。
图2为根据本发明一个实施例的循环程序中原始迭代空间的示意图。如图2所示,通过所获得的第一超平面和第二超平面改变循环程序的PE阵列,如图3所示。只有在循环网络边缘的分块,例如,T0、T1、T2和T4不是规则的,内部的分块,例如T3都是规则的。事实上,当循环的规模很大的时候,规则分块的数量是占绝大部分的比例。图4为根据本发明一个实施例的分块被映射到RCA的示意图。如图4所示,一个完整的规则的分块就被映射到一个RCA8X8上面去了,图4中带圈的"+"表示算子1,带网格的"+"表示算子2,带框的R表示临时寄存器。
根据本发明实施例的系统,通过循环程序阵列中语句之间的依赖关系和变换关系生成两个超平面,并通过该超平面对循环程序进行划分,从而提高了阵列的处理单元利用率减少了运算次数,同时降低了阵列之间的通信量,减少数据的载入和存储时间。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种处理器循环映射的优化方法,其特征在于,包括以下步骤:
获取循环程序阵列,并对所述循环程序阵列进行处理以获得所述循环程序阵列中语句之间的依赖关系和变换关系;
对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,所述第一超平面和所述第二超平面相互独立;以及
根据所述第一超平面和所述第二超平面将所述循环程序阵列划分为多个块以完成对所述处理器循环映射的优化。
2.根据权利要求1所述的处理器循环映射的优化方法,其特征在于,通过时间约束、空间约束和优化的方式对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面。
3.根据权利要求1所述的处理器循环映射的优化方法,其特征在于,通过如下约束公式使所述第二超平面与所述第一超平面相互独立,其中,所述公式为:
c1d2-c2d1>0orc1d2-c2d1<0,
其中,c1和c2表示所述第一超平面的参数,d1和d2表示所述第二超平面的参数。
4.根据权利要求2所述的处理器循环映射的优化方法,其特征在于,所述时间约束通过如下公式表示,
&Theta; ( i &RightArrow; T ) - &Theta; ( i &RightArrow; S ) &GreaterEqual; 1 , i &RightArrow; T &Element; P e
其中,
Figure FDA00002876660800013
Figure FDA00002876660800014
是分别表示依赖关系的变量,S为源语句,T为目标语句。Θ表示变量的线性组合,即 &Theta; ( i &RightArrow; ) = ( c 1 , c 2 ) &CenterDot; i &RightArrow; .
5.根据权利要求2所述的处理器循环映射的优化方法,其特征在于,所述优化处理指通过所述时间约束和空间约束寻找最小的循环变换参数。
6.一种处理器循环映射的优化系统,其特征在于,包括:
获取模块,用于获取循环程序阵列,并对所述循环程序阵列进行处理以获得所述循环程序阵列中语句之间的依赖关系和变换关系;
处理模块,用于对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面,其中,所述第一超平面和所述第二超平面相互独立;以及
划分模块,用于根据所述第一超平面和所述第二超平面将所述循环程序阵列划分为多个块以完成对所述处理器循环映射的优化。
7.根据权利要求6所述的处理器循环映射的优化系统,其特征在于,通过时间约束、空间约束和优化的方式对所述依赖关系和变换关系进行处理以生成第一超平面和第二超平面。
8.根据权利要求6所述的处理器循环映射的优化系统,其特征在于,通过如下约束公式使所述第二超平面与所述第一超平面相互独立,其中,所述公式为:
c1d2-c2d1>0orc1d2-c2d1<0,
其中,c1和c2表示所述第一超平面的参数,d1和d2表示所述第二超平面的参数。
9.根据权利要求7所述的处理器循环映射的优化系统,其特征在于,
所述时间约束通过如下公式表示,
&Theta; ( i &RightArrow; T ) - &Theta; ( i &RightArrow; S ) &GreaterEqual; 1 , i &RightArrow; T &Element; P e
其中,
Figure FDA00002876660800023
Figure FDA00002876660800024
是分别表示依赖关系的变量,S为源语句,T为目标语句。Θ表示变量的线性组合,即 &Theta; ( i &RightArrow; ) = ( c 1 , c 2 ) &CenterDot; i &RightArrow; .
10.根据权利要求7所述的处理器循环映射的优化系统,其特征在于,所述优化处理指通过所述时间约束和空间约束寻找最小的循环变换参数。
CN201310066541.XA 2013-03-01 2013-03-01 处理器循环映射的优化方法及系统 Active CN103106067B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310066541.XA CN103106067B (zh) 2013-03-01 2013-03-01 处理器循环映射的优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310066541.XA CN103106067B (zh) 2013-03-01 2013-03-01 处理器循环映射的优化方法及系统

Publications (2)

Publication Number Publication Date
CN103106067A true CN103106067A (zh) 2013-05-15
CN103106067B CN103106067B (zh) 2016-01-20

Family

ID=48313958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310066541.XA Active CN103106067B (zh) 2013-03-01 2013-03-01 处理器循环映射的优化方法及系统

Country Status (1)

Country Link
CN (1) CN103106067B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718245A (zh) * 2016-01-18 2016-06-29 清华大学 可重构计算循环映射优化方法
CN107193535A (zh) * 2017-05-16 2017-09-22 中国人民解放军信息工程大学 基于simd扩展部件的嵌套循环向量并行的实现方法及其装置
CN112559033A (zh) * 2020-12-25 2021-03-26 山东高云半导体科技有限公司 代码处理方法、装置、存储介质及处理器
WO2022110567A1 (zh) * 2020-11-30 2022-06-02 上海交通大学 一种针对粗粒度可重构结构的数据重用消除访存冲突方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307673A1 (en) * 2007-09-26 2009-12-10 Eichenberger Alexandre E System and Method for Domain Stretching for an Advanced Dual-Representation Polyhedral Loop Transformation Framework
TW201246070A (en) * 2010-12-24 2012-11-16 Intel Corp Loop parallelization based on loop splitting or index array

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307673A1 (en) * 2007-09-26 2009-12-10 Eichenberger Alexandre E System and Method for Domain Stretching for an Advanced Dual-Representation Polyhedral Loop Transformation Framework
TW201246070A (en) * 2010-12-24 2012-11-16 Intel Corp Loop parallelization based on loop splitting or index array

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NECTARIOS KOZIRIS等: "Mapping Nested Loops onto Distributed Memory Multiprocessors", 《PROCEEDINGS OF 1997 INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS》 *
朱敏等: "关键循环到可重构阵列映射中的时序参数分析", 《计算机工程》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718245A (zh) * 2016-01-18 2016-06-29 清华大学 可重构计算循环映射优化方法
CN105718245B (zh) * 2016-01-18 2018-08-28 清华大学 可重构计算循环映射优化方法
CN107193535A (zh) * 2017-05-16 2017-09-22 中国人民解放军信息工程大学 基于simd扩展部件的嵌套循环向量并行的实现方法及其装置
CN107193535B (zh) * 2017-05-16 2019-11-08 中国人民解放军信息工程大学 基于simd扩展部件的嵌套循环向量并行的实现方法及其装置
WO2022110567A1 (zh) * 2020-11-30 2022-06-02 上海交通大学 一种针对粗粒度可重构结构的数据重用消除访存冲突方法
CN112559033A (zh) * 2020-12-25 2021-03-26 山东高云半导体科技有限公司 代码处理方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
CN103106067B (zh) 2016-01-20

Similar Documents

Publication Publication Date Title
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
US20230251861A1 (en) Accelerating linear algebra kernels for any processor architecture
US11182138B2 (en) Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
Zohouri et al. Combined spatial and temporal blocking for high-performance stencil computation on FPGAs using OpenCL
US10216487B2 (en) Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
EP3420527B1 (en) Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
JP6408717B2 (ja) 画像プロセッサのためのラインバッファユニット
Henretty et al. A stencil compiler for short-vector simd architectures
US10915319B2 (en) Two dimensional masked shift instruction
Rupnow et al. A study of high-level synthesis: Promises and challenges
TWI690896B (zh) 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體
US20100218196A1 (en) System, methods and apparatus for program optimization for multi-threaded processor architectures
JP2019507922A (ja) 画像プロセッサのためのコンパイラ管理メモリ
US20100192138A1 (en) Methods And Apparatus For Local Memory Compaction
CN103106067B (zh) 处理器循环映射的优化方法及系统
Luzhou et al. Domain-specific language and compiler for stencil computation on FPGA-based systolic computational-memory array
JP6750022B2 (ja) 画像プロセッサのためのマクロi/oユニット
Ferry et al. Increasing fpga accelerators memory bandwidth with a burst-friendly memory layout
CN103400354B (zh) 基于OpenMP的遥感影像几何校正并行处理方法
WO2010121228A2 (en) System, methods and apparatus for program optimization for multi-threaded processor architectures
Hosseinabady et al. Optimised OpenCL workgroup synthesis for hybrid ARM-FPGA devices
Weinhardt et al. CHiPReP—A compiler for the HiPReP high-performance reconfigurable processor
US11106438B2 (en) Integration of automated complier dataflow optimizations
Prajapati Scheduling and tiling reductions on realistic machines
Henretty et al. A domain-specific language and compiler for stencil computations on short-vector simd and gpu architectures

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Yin Shouyi

Inventor after: Liu Leibo

Inventor after: Wei Shaojun

Inventor before: Yin Shouyi

Inventor before: Liu Dajiang

Inventor before: Liu Leibo

Inventor before: Wei Shaojun

CB03 Change of inventor or designer information
TR01 Transfer of patent right

Effective date of registration: 20180930

Address after: 100084 Beijing Haidian District North Fourth Ring Road 9 22 22 2212

Patentee after: Beijing Qingwei Intelligent Technology Co., Ltd.

Address before: 100084 Haidian District 100084-82 mailbox in Beijing

Patentee before: Tsinghua University

TR01 Transfer of patent right