CN105718245B - 可重构计算循环映射优化方法 - Google Patents
可重构计算循环映射优化方法 Download PDFInfo
- Publication number
- CN105718245B CN105718245B CN201610031827.8A CN201610031827A CN105718245B CN 105718245 B CN105718245 B CN 105718245B CN 201610031827 A CN201610031827 A CN 201610031827A CN 105718245 B CN105718245 B CN 105718245B
- Authority
- CN
- China
- Prior art keywords
- internal layer
- indicate
- time interval
- iteration time
- optimal
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013507 mapping Methods 0.000 title claims abstract description 25
- 238000005457 optimization Methods 0.000 title claims abstract description 20
- 125000004122 cyclic group Chemical group 0.000 title claims abstract description 19
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 46
- 230000003252 repetitive effect Effects 0.000 claims abstract description 19
- 238000007906 compression Methods 0.000 claims abstract description 16
- 230000006835 compression Effects 0.000 claims abstract description 14
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 6
- 239000000284 extract Substances 0.000 claims abstract description 5
- 239000010410 layer Substances 0.000 claims description 82
- 239000002356 single layer Substances 0.000 claims description 8
- 238000010586 diagram Methods 0.000 claims description 4
- 230000008901 benefit Effects 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000004992 fission Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 235000015170 shellfish Nutrition 0.000 description 2
- 235000008733 Citrus aurantifolia Nutrition 0.000 description 1
- 235000011941 Tilia x europaea Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000009412 basement excavation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004571 lime Substances 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000003643 water by type Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种可重构计算循环映射优化方法,包括步骤:建立内外层循环模型,根据模型确定最优内层迭代时间间隔和最优外层迭代时间间隔;根据最优内层迭代时间间隔得到内层流水,以及根据最优外层迭代时间间隔得到外层流水核心;将外层流水核心分割为第一预设数量的段落,抽取每个段落的重复单元压缩为第二预设数量的拷贝;对每个重复单元,根据REGIMap算法,构建原始兼容图并进行压缩,在压缩后的兼容图中搜索大小等同于需要生成配置信息的算子数量的最大团。本发明具有如下优点:降低非完美多层嵌套循环在可重构计算阵列上的计算时间和配置信息量,从而提高了可重构处理器的性能;算法复杂度是多项式时间,满足实际的编译要求。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种可重构计算循环映射优化方法。
背景技术
可重构处理器是一类十分有发展潜力的并行计算架构,它融合了通用处理器(GPP)的灵活性和专用集成电路(ASIC)的高速性。从理论上,相对于通用处理器,可重构处理器可以取得10倍以上的性能提升。然而,只有将应用程序中的操作合理地调度并配置到可重构处理器的计算阵列上,才能保证可重构处理器正确、高效地完成任务。
对于现实中的应用程序来说,循环的执行往往占据了大部分运行时间。循环的特点是不改变运算的结构,只改变运算的数据。对于可重构处理器上的计算阵列来说,一套配置重复执行,可以有效地降低配置的代价。循环的多次重复计算恰好符合可重构计算阵列的特点。对循环的执行进行优化,效果明显,也有很多规律可以利用。因此,我们要提高可重构处理器的性能,重点应该放在对循环的处理上。
对于单层循环而言,使用模调度策略的软件流水是一类常用的加速循环执行的方法。这种方法把循环的一次迭代内的算子(即应用程序中的最小执行单元)重新排列并且固定其位置,然后规定每次迭代启动后等待一个固定时间间隔(initial interval,II)再启动下一个迭代。这样得到的迭代与迭代之间有规律地重叠形成的最小重复单元,也就是重组后的循环体,称为流水核心(kernel)。然后只要对kernel中的算子进行布局布线(placement and routing,P&R),把每个算子映射到时域扩展后的可重构计算阵列上,安排算子在计算阵列上执行的位置,并且决定各个数据传输的路径,进而生成配置信息。有了配置信息,就可以引导可重构计算阵列每II个控制步执行一轮kernel内的所有操作。一般II越小越好,因为越小的II代表着迭代之间更大程度的重叠执行,也就意味着单层循环执行的总时间更短。但是受到数据依赖和计算资源数量的限制,II总是有一个下界。大多数方法会从II的下界开始尝试P&R,每当P&R失败,也就是无法形成合法映射,就逐步增大II继续尝试,直到成功。这样得到的最终配置信息就是最优的或者近似最优的。
在处理多层嵌套循环的场合,我们也可以按照单层循环的方式去处理,寻求最内层迭代的最大并行。但是很多情况下,这么做并不能取得最好的效果。因为最小的最内层II只能代表最内层循环的迭代进行了最大限度地重叠,并不能代表整体取得了最大的并行度,也就无法充分利用硬件资源,因此达不到更好的性能。这就要求我们把挖掘并行度的视野从最内层扩展到外层,但是这比处理单层循环困难很多,因为诸如循环的变形、II的决定等,都在维度上发生了扩展,使得影响性能的因素更加复杂,搜索空间更加庞大,就必须要有更优的建模和搜索方式。
如果要处理的多层循环是非完美的,也就是并非所有语句都出现在最内层的情况,映射及配置生成更是一个棘手的问题。虽然可以通过循环分离(fission)把部分非完美循环分裂成多个完美循环来处理,但是遇到不同语句间有来回依赖的情况,循环分离就不合法了。如果我们仍然希望挖掘多层并行性,除了要面对多个II如何确定的问题以外,如何压缩过大的配置信息也是一个难点,因为非完美循环内部组成的复杂性会导致当内层迭代次数较大时形成的kernel行数十分庞大。
从已有的文献来看,目前主流的方法大都是进行单层流水,对于非完美的多层嵌套循环,最多也仅仅做到了隐藏单独语句、合并两次内层流水的排空和装载阶段的程度,并没有积极地重叠外层迭代。尤其是对于含有并列子循环的非完美嵌套循环,没有现成的方法能够有效地挖掘外层并行性。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种可重构计算循环映射优化方法。
为了实现上述目的,本发明的实施例公开了一种可重构计算循环映射优化方法,包括以下步骤:S1:建立内外层循环模型,根据所述内外层循环模型确定最优内层迭代时间间隔和最优外层迭代时间间隔;S2:根据所述最优内层迭代时间间隔得到内层流水,以及根据所述最优外层迭代时间间隔得到外层流水核心;S3:将所述外层流水核心分割为第一预设数量的段落,抽取每个段落的重复单元,将每个所述重复单元压缩为第二预设数量的拷贝;S4:对每个重复单元,根据REGIMap算法,构建原始兼容图,对所述原始兼容图进行压缩,在压缩后的兼容图中搜索大小等同于需要生成配置信息的算子数量的最大团。
根据本发明实施例的可重构计算循环映射优化方法,通过多层软流水和核心压缩的优化方法,来降低非完美多层嵌套循环在可重构计算阵列上的计算时间和配置信息量,从而提高了可重构处理器的性能;算法复杂度是多项式时间,满足实际的编译要求。
另外,根据本发明上述实施例的可重构计算循环映射优化方法,还可以具有如下附加的技术特征:
进一步地,步骤S1进一步包括:
S101:建立所述内外层循环模型:
min Lo=Σ{Ldx}+Σ{IIix·(TCix-1)}+IIo·(TCo-1)
s.t.IIix≥RecMIIix
IIo≥RecMIIo
IIix,IIo∈N+
x=1,2,…,m
其中,ILx表示第x个内层循环,Lo表示总延时,Li表示第i层的延时,Ldx表示ILx的DFG的延时,Wdx表示ILx的DFG的宽度,DFG表示数据流图,IIix表示ILx的内层迭代时间间隔,IIo表示外层迭代时间间隔,TCix表示ILx的内层TC,TCo表示外层TC,TC表示迭代次数,NPE表示可用的计算单元数量,m表示内层循环的个数,RecMIIix表示ILx在依赖约束下的最优迭代时间间隔,RecMIIo表示外层在依赖约束下的最优迭代时间间隔;S102:内层流水的宽度Wi、外层流水的宽度Wo与各层的迭代时间间隔II之间有如下关系:
Wi=max{Wix}
Wo≤NPE
固定内层流水的宽度Wi,然后让最内层迭代时间间隔取最小,使得外层IIo的下限也最小,最终使得Lo也能取到最小值。
进一步地,步骤S2进一步包括:S201:使用单层流水的方式,根据所述最优内层迭代时间间隔,对内层各个部分分别进行流水调度,得到各个内层的流水线和各个内层流水核心;S202:将各个内层的流水线首尾相接,得到一整条完整的内层流水;S203:根据所述最优外层迭代时间间隔得到所述外层流水核心。
进一步地,步骤S3进一步包括:S301:把所述外层流水核心分割成所述第一预设数量的段落,每个段落由不同的内层流水核心重复一定次数构成;S302:从每个段落中任意截取行数相当于内层流水核心的行数的公倍数的部分,其中,如果是装入和排空阶段,需要补全算子;如果段落的行数小于所述公倍数,把整个段落全部截取;S303:将每个所述重复单元进一步压缩为所述重复单元的元素,在配置信息中包含所述重复单元的元素的数量。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的可重构计算循环映射优化方法的流程图;
图2是本发明一个实施例的可重构计算循环映射优化方法中原是兼容图进行压缩的示意图;
图3(A)和图3(B)是本发明一个实施例的可重构计算循环映射优化方法的一个示例的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
以下结合附图描述根据本发明实施例的可重构计算循环映射优化方法。
图1是本发明一个实施例的可重构计算循环映射优化方法的流程图。请参考图1,一种可重构计算循环映射优化方法,包括以下步骤:
S1:建立内外层循环模型,根据内外层循环模型确定最优内层迭代时间间隔和最优外层迭代时间间隔。
具体地,S101:在对多层非完美嵌套循环进行多层软件流水的场景,内层各个部分以及外层都有一个启动间隔,各个II对总延时的贡献度不同,受到的约束也不同,又相互影响,导致内外层II要在要充分考量各自对总延时的影响下同时决定。为此,我们建立了一个精确的模型,以找到最优解。下面是我们建立的模型,其中ILx表示第x个内层循环(为了统一处理,我们把单独的语句看作是迭代次数为1的内层循环),Lo表示总延时,Li表示第i层的延时,Ldx表示ILx的DFG的延时,IIix表示ILx的内层II,IIo表示外层II,TCix表示ILx的内层TC,TCo表示外层TC。NPE表示可用的计算单元(process element,PE)数量,m表示内层循环的个数,RecMIIix表示ILx在依赖约束下的最小II。RecMIIo表示外层在依赖约束下的最小II。
min Lo=Σ{Ldx}+Σ{IIix·(TCix-1)}+IIo·(TCo-1)
s.t.IIix≥RecMiIix
IIo≥RecMIIo
IIix,IIo∈N+
x=1,2,…,m
S102:这是一个整数非线性规划问题(INLP),现有的数学方法难以快速找到精确解,因此我们需要专门针对它进行研究,寻求最有效率的解法。内层流水的宽度Wi、外层流水的宽度Wo与各层的迭代时间间隔II之间有如下关系:
Wi=max{Wix}
Wo≤NPE
由此,我们发现了如下的推导关系:我们只要先固定内层流水的宽度Wi,然后让最内层II取最小,就可以使得外层IIo的下限也最小,最终使得Lo也能取到最小值。而Wi的取值种类是有限的,不超过PE个数,因此只要在对每个Wi的取值都做这种推导,最后再把各种Wi取值情况下的Lo进行比较,就可以在极短的时间(O(NPE))内得出最优解。整个推导流程概括起来如下:
根据最优内层迭代时间间隔II得到内层流水,以及根据最优外层迭代时间间隔II得到外层流水核心kernel。
具体地,S201:使用单层流水的方式,根据决定好的II,对内层各个部分分别进行流水调度,得到各个内层的流水线和各个内层kernel(inner-level kernel,ILK)。
S202:将各个内层的流水线首尾相接,得到一整条完整的内层流水,即一个外层迭代所包含的全部操作。
S203:根据外层II,将外层迭代也重叠起来,得到外层kernel(outer-levelkernel,OLK)。
S3:将所述外层流水核心分割为第一预设数量的段落,抽取每个段落的重复单元,将每个所述重复单元压缩为第二预设数量的拷贝。当迭代次数(trip count,TC)比较大的时候,多层流水得到的外层kernel行数就十分庞大。这会导致配置信息过大,超出了配置信息存储器的限制。为了解决这个问题,本申请实现了一种新的kernel压缩技术,具体包括以下步骤:
S301:根据包含内层的不同,把OLK分割成若干段(segment),每一段都由不同的ILK重复一定次数构成。由于分段的数量肯定不会超过内层循环个数+1,所以不至于使整个问题的时间复杂度太高。
S302:抽取出每一段的重复单元(segment kernel,SK),具体做法是从段中任意截取行数相当于ILK行数的公倍数的部分。这里有两个注意点:如果是装入和排空阶段,需要补全算子;如果段的行数小于这个公倍数,就把整段全部截取。
S303:每个SK都是由若干个ILK重复一定次数构成的,所以将SK进一步压缩成更小的元素(segment kernel element,SKE)。每个SKE都是相应的ILK的一份拷贝。然后最后的配置信息也只需要包含SKE的量。反过来看,SKE可以自我复制最终还原成完整的OLK。要注意的是同一个SKE的映射方式必须相同,这就相当于牺牲了不必要的映射灵活性,来换取配置信息的极大压缩。
S4:对每个重复单元,根据REGIMap算法,构建原始兼容图,对所述原始兼容图进行压缩,在压缩后的兼容图中搜索大小等同于需要生成配置信息的算子数量的最大团。具体包括以下步骤:
S401:对于每个SK,首先根据REGIMap的方法,构建一个完整的原始兼容图。
S402:在构建完原始兼容图后,对其进行压缩,以对应SK到SKE的压缩过程,减小搜索最大团的时间复杂度和配置信息量。压缩过程中,原有的资源和依赖冲突必须被保留到最后,也就是说映射元素之间只有在压缩前全部兼容,在压缩合并后才可兼容,如图2所示。
S403:在压缩后的兼容图中搜索最大团,如果能找到大小等同于需要生成配置信息的算子数量的最大团,就代表为该SK所在的整个segment获得了一个完整的合法的配置方案。
当所有的SK都顺利完成这一系列过程,整个OLK的配置方案都得以完成。就可以为非完美多层嵌套循环快速地生成在性能上和大小上都十分理想的配置信息。
为了验证本申请的非完美多层嵌套循环映射优化方法,选择了REMUS为硬件平台来进行试验。REMUS是一种可重构多媒体处理器,它的工作频率为200MHz,其可重构计算阵列有4X4、8X8等规格。为了展示出非完美多层嵌套循环映射优化方法的具体过程,本申请以一个带有并列子循环和来回依赖的非完美多层嵌套循环映射到4X4的计算阵列上为例,如图3(A)和图3(B)所示。
步骤1:搜索最优的II组合。
由于可重构计算阵列大小为4X4,所以内层流水的宽度Wi允许的范围是1~16。考虑到依赖约束,目标循环内层的4个子部分IL0~IL3的最小II分别是2、2、3、1,当内层全部取最小II时,Wi为3,所以Wi的取值范围可以进一步缩小到1~3。根据模型,可以推导出不同Wi下的各个II以及最后的总计算延时Lo,如下:
Wi | IIi0 | IIi1 | IIi2 | IIi3 | Li | IIo | Lo |
1 | 3 | 2 | 6 | 1 | 7008 | 3005 | 3009003 |
2 | 2 | 2 | 4 | 1 | 4674 | 2005 | 2007669 |
3 | 2 | 2 | 3 | 1 | 4008 | 2005 | 2007003 |
通过比较Lo可知,当我们取内层II为2、2、3、1,外层II为2005时,总的计算延时最小。
步骤2:内外层流水调度。
首先,根据决定好的内层II(2、2、3、1),对内层各个部分分别进行流水调度,得到各个内层kernel(inner-level kernel,ILK)。IL0的流水如图3(A)中的(b)所示,其余的IL以此类推。
然后,将各个内层流水线首尾相接,得到一整条完整的内层流水,也就是一个外层迭代所包含的全部操作,如图3(A)中的(c)所示。
最后,我们根据决定好的外层II(2005),将外层迭代也重叠起来,得到外层kernel(outer-level kernel,OLK),如图3(B)中的(d)所示。
步骤3:kernel的压缩。
本示例的迭代次数(trip count,TC)比较大,多层流水得到的OLK有2005行。这会导致配置信息过大,超出了配置信息存储器的限制,因此需要对OLK进行压缩:
首先,根据包含内层的不同,把OLK分割成3段(segment),每一段都由不同的ILK重复一定次数构成。如图3(B)中的(d)所示,Segment 0包含了ILK2和ILK0,Segment 1包含了ILK3和ILK0,Segment 2包含了ILK1。
然后,我们抽取出每一段的重复单元(segment kernel,SK)。Segment 0由于ILK2和ILK0的行数分别是3和2,最小公倍数为6,所以SK0的行数为6,如图3(B)中的(d)所示。另外两个segment由于行数小于等于其中的ILK行数的公倍数,所以它们的SK的行数等于各自Segment的行数。
如图3(B)中的(e)所示,我们将SK0进一步压缩成SKE0和SKE1。SKE0是ILK2的一份拷贝,SKE1是ILK0的一份拷贝。另外两个SK以此类推。SK1的其中一个SKE也是ILK0的一份拷贝,但是它的映射方式可以与SKE1不同。
步骤4:P&R。
为了将OLK映射到可重构计算阵列上,以SK为单位,依次对每个SK进行P&R。
以SK0为例,我们首先按照REGIMap的方法,为其构造原始兼容图。SK0包含21个算子,映射到16个PE上,原始兼容图中一共有21X16个点。
然后对其进行压缩,映射元素之间只有在压缩前全部兼容,在压缩合并后才可兼容,例如,虽然f1算子与b0算子都使用PE1的点是兼容的,但是f2算子与b1算子都使用PE1的点是冲突的(因为这两个算子出现在同一个控制步,不能同时占用同一个PE),因此压缩后得到的f算子使用PE1的点和b算子使用PE1的点是冲突的。
最后本申请使用启发式算法在压缩后的兼容图中搜索最大团,找到了大小为9的最大团,也就为SK0的两个SKE的所有算子找到了合法映射,完成了P&R。得到的算子在可重构计算阵列上的配置情况如图3(B)中的(f)所示。
SK1和SK2比SK0简单很多,用同样的方法处理即可。由于SK1和SK2仅包含其中ILK的一次迭代甚至不到一次迭代,原始兼容图都已经不需要压缩,最后映射到计算阵列上的方案也可以很快地搜索出来。当所有的SK都完成P&R,整个OLK的配置方案都得以完成,我们成功地将目标循环映射到可重构计算阵列上。
另外,本发明实施例的可重构计算循环映射优化方法的其它构成以及作用对于本领域的技术人员而言都是已知的,为了减少冗余,不做赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。
Claims (1)
1.一种可重构计算循环映射优化方法,其特征在于,包括以下步骤:
S1:建立内外层循环模型,根据所述内外层循环模型确定最优内层迭代时间间隔和最优外层迭代时间间隔,步骤S1进一步包括:
S101:建立所述内外层循环模型:
min Lo=Σ{Ldx}+Σ{IIix·(TCix-1)}+IIo·(TCo-1)
s.t.IIix≥RecMIIix
IIo≥RecMIIo
IIix,IIo∈N+
x=1,2,…,m
其中,ILx表示第x个内层循环,Lo表示总延时,Li表示第i层的延时,Ldx表示ILx的DFG的延时,Wdx表示ILx的DFG的宽度,DFG表示数据流图,IIix表示ILx的内层迭代时间间隔,IIo表示外层迭代时间间隔,TCix表示ILx的内层TC,TCo表示外层TC,TC表示迭代次数,NPE表示可用的计算单元数量,m表示内层循环的个数,RecMIIix表示ILx在依赖约束下的最优迭代时间间隔,RecMIIo表示外层在依赖约束下的最优迭代时间间隔;
S102:内层流水的宽度Wi、外层流水的宽度Wo与各层的迭代时间间隔II之间有如下关系:
Wi=max{Wix}
Wo≤NPE
固定内层流水的宽度Wi,然后让最内层迭代时间间隔取最小,使得外层IIo的下限也最小,最终使得Lo也能取到最小值;
S2:根据所述最优内层迭代时间间隔得到内层流水,以及根据所述最优外层迭代时间间隔得到外层流水核心,步骤S2进一步包括:
S201:使用单层流水的方式,根据所述最优内层迭代时间间隔,对内层各个部分分别进行流水调度,得到各个内层的流水线和各个内层流水核心;
S202:将各个内层的流水线首尾相接,得到一整条完整的内层流水;
S203:根据所述最优外层迭代时间间隔得到所述外层流水核心;
S3:将所述外层流水核心分割为第一预设数量的段落,抽取每个段落的重复单元,将每个所述重复单元压缩为第二预设数量的拷贝,步骤S3进一步包括:
S301:把所述外层流水核心分割成所述第一预设数量的段落,每个段落由不同的内层流水核心重复一定次数构成;
S302:从每个段落中任意截取行数相当于内层流水核心的行数的公倍数的部分,其中,如果是装入和排空阶段,需要补全算子;如果段落的行数小于所述公倍数,把整个段落全部截取;
S303:将每个所述重复单元进一步压缩为所述重复单元的元素,在配置信息中包含所述重复单元的元素的数量;
S4:对每个重复单元,根据REGIMap算法,构建原始兼容图,对所述原始兼容图进行压缩,在压缩后的兼容图中搜索大小等同于需要生成配置信息的算子数量的最大团。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610031827.8A CN105718245B (zh) | 2016-01-18 | 2016-01-18 | 可重构计算循环映射优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610031827.8A CN105718245B (zh) | 2016-01-18 | 2016-01-18 | 可重构计算循环映射优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718245A CN105718245A (zh) | 2016-06-29 |
CN105718245B true CN105718245B (zh) | 2018-08-28 |
Family
ID=56147245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610031827.8A Active CN105718245B (zh) | 2016-01-18 | 2016-01-18 | 可重构计算循环映射优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718245B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679010B (zh) * | 2017-09-20 | 2020-10-23 | 东南大学 | 一种面向可重构计算阵列的算子映射系统及方法 |
CN108228529B (zh) * | 2017-09-28 | 2019-07-26 | 清华大学无锡应用技术研究院 | 用于配置可重构计算阵列的方法及其系统 |
CN112631610B (zh) * | 2020-11-30 | 2022-04-26 | 上海交通大学 | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 |
CN112486907A (zh) * | 2020-12-18 | 2021-03-12 | 清华大学 | 可重构处理器上多层循环任务的硬件实现方法 |
CN112269581B (zh) * | 2020-12-24 | 2021-07-02 | 北京清微智能科技有限公司 | 一种可重构芯片的内存耦合编译方法及系统 |
CN113419990B (zh) * | 2021-06-22 | 2023-10-31 | 重庆大学 | 在粗粒度可重构阵列上加速非完美嵌套循环的方法及装置 |
CN113934681B (zh) * | 2021-12-15 | 2022-09-13 | 北京清微智能信息技术有限公司 | 一种可重构计算阵列及构建方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214157A (zh) * | 2011-06-08 | 2011-10-12 | 清华大学 | 一种动态可重构阵列时序控制的方法 |
CN102567279A (zh) * | 2011-12-22 | 2012-07-11 | 清华大学 | 一种动态可重构阵列时序配置信息的生成方法 |
CN103106067A (zh) * | 2013-03-01 | 2013-05-15 | 清华大学 | 处理器循环映射的优化方法及系统 |
CN105159737A (zh) * | 2015-07-28 | 2015-12-16 | 哈尔滨工程大学 | 一种面向类仿射数组下标应用的参数化并行存储结构模版 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101929754B1 (ko) * | 2012-03-16 | 2018-12-17 | 삼성전자 주식회사 | 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법 |
-
2016
- 2016-01-18 CN CN201610031827.8A patent/CN105718245B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214157A (zh) * | 2011-06-08 | 2011-10-12 | 清华大学 | 一种动态可重构阵列时序控制的方法 |
CN102567279A (zh) * | 2011-12-22 | 2012-07-11 | 清华大学 | 一种动态可重构阵列时序配置信息的生成方法 |
CN103106067A (zh) * | 2013-03-01 | 2013-05-15 | 清华大学 | 处理器循环映射的优化方法及系统 |
CN105159737A (zh) * | 2015-07-28 | 2015-12-16 | 哈尔滨工程大学 | 一种面向类仿射数组下标应用的参数化并行存储结构模版 |
Non-Patent Citations (4)
Title |
---|
《Automatic Loop-Based Pipeline Optimization on Reconfigurable Platform》;GUO等;《 IEEE International Conference on Trust, Security and Privacy in Computing and Communications》;20131231;第1-14页 * |
Map Reduce inspired loop mapping for coarse-grained reconfigurable architecture;Yin等;《Science China》;20141231;第57卷(第12期);第916-926页 * |
基于循环优化的可重构处理器任务编译器设计实现;栗念龙等;《微电子学与计算机》;20130831;第30卷(第8期);第124-127页 * |
基于循环映射的可重构处理器设计;于苏东等;《北京邮电大学学报》;20090831;第32卷(第4期);第10-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105718245A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718245B (zh) | 可重构计算循环映射优化方法 | |
CN108228972B (zh) | 确定用于可重配置逻辑器件的至少一个电路的布置的方法 | |
Hao et al. | FPGA/DNN co-design: An efficient design methodology for IoT intelligence on the edge | |
US10466976B2 (en) | Compiler architecture for programmable application specific integrated circuit based network devices | |
CN109255829A (zh) | 用于光线跟踪的混合层级 | |
KR20220129107A (ko) | 행렬 곱셈기 | |
CN104834630B (zh) | 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备 | |
Yoghourdjian et al. | High-quality ultra-compact grid layout of grouped networks | |
JP7299234B2 (ja) | 集積回路向け多層共配置 | |
WO2022057303A1 (zh) | 一种图处理的方法,系统以及装置 | |
Lu et al. | Rl-sizer: Vlsi gate sizing for timing optimization using deep reinforcement learning | |
CN106485766A (zh) | 一种约束Delaunay三角网的并行构建方法 | |
CN112463159B (zh) | 编译方法、装置、电子设备和存储介质 | |
TW201913405A (zh) | 用於元組圖形程式之子圖內最佳化之方法 | |
Liu et al. | OBFS: OpenCL based BFS optimizations on software programmable FPGAs | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Deest et al. | Towards scalable and efficient FPGA stencil accelerators | |
Jiang et al. | CU. POKer: placing DNNs on wafer-scale AI accelerator with optimal kernel sizing | |
US10002432B2 (en) | Method and apparatus for rendering target fluid | |
Chen et al. | A framework for neural network architecture and compile co-optimization | |
WO2023050807A1 (zh) | 一种数据处理方法、装置、系统、电子设备及存储介质 | |
CN113505560B (zh) | 一种fpga布线拥塞预测方法及系统 | |
Werner et al. | Unordered task-parallel augmented merge tree construction | |
CN116185377A (zh) | 计算图的优化方法、计算装置及相关产品 | |
CN107529638B (zh) | 线性求解器的加速方法、存储数据库及gpu系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |