可重构计算循环映射优化方法

文档序号:9929381阅读:709来源:国知局
可重构计算循环映射优化方法
【技术领域】
[0001] 本发明涉及数据处理技术领域,具体涉及一种可重构计算循环映射优化方法。
【背景技术】
[0002] 可重构处理器是一类十分有发展潜力的并行计算架构,它融合了通用处理器 (GPP)的灵活性和专用集成电路(ASIC)的高速性。从理论上,相对于通用处理器,可重构处 理器可以取得10倍以上的性能提升。然而,只有将应用程序中的操作合理地调度并配置到 可重构处理器的计算阵列上,才能保证可重构处理器正确、高效地完成任务。
[0003] 对于现实中的应用程序来说,循环的执行往往占据了大部分运行时间。循环的特 点是不改变运算的结构,只改变运算的数据。对于可重构处理器上的计算阵列来说,一套配 置重复执行,可以有效地降低配置的代价。循环的多次重复计算恰好符合可重构计算阵列 的特点。对循环的执行进行优化,效果明显,也有很多规律可以利用。因此,我们要提高可重 构处理器的性能,重点应该放在对循环的处理上。
[0004] 对于单层循环而言,使用模调度策略的软件流水是一类常用的加速循环执行的方 法。这种方法把循环的一次迭代内的算子(即应用程序中的最小执行单元)重新排列并且固 定其位置,然后规定每次迭代启动后等待一个固定时间间隔(initial interval,II)再启 动下一个迭代。这样得到的迭代与迭代之间有规律地重叠形成的最小重复单元,也就是重 组后的循环体,称为流水核心(kernel)。然后只要对kernel中的算子进行布局布线 (placement and routing,P&R),把每个算子映射到时域扩展后的可重构计算阵列上,安排 算子在计算阵列上执行的位置,并且决定各个数据传输的路径,进而生成配置信息。有了配 置信息,就可以引导可重构计算阵列每II个控制步执行一轮kernel内的所有操作。一般II 越小越好,因为越小的II代表着迭代之间更大程度的重叠执行,也就意味着单层循环执行 的总时间更短。但是受到数据依赖和计算资源数量的限制,II总是有一个下界。大多数方法 会从II的下界开始尝试P&R,每当P&R失败,也就是无法形成合法映射,就逐步增大II继续尝 试,直到成功。这样得到的最终配置信息就是最优的或者近似最优的。
[0005] 在处理多层嵌套循环的场合,我们也可以按照单层循环的方式去处理,寻求最内 层迭代的最大并行。但是很多情况下,这么做并不能取得最好的效果。因为最小的最内层II 只能代表最内层循环的迭代进行了最大限度地重叠,并不能代表整体取得了最大的并行 度,也就无法充分利用硬件资源,因此达不到更好的性能。这就要求我们把挖掘并行度的视 野从最内层扩展到外层,但是这比处理单层循环困难很多,因为诸如循环的变形、II的决定 等,都在维度上发生了扩展,使得影响性能的因素更加复杂,搜索空间更加庞大,就必须要 有更优的建模和搜索方式。
[0006] 如果要处理的多层循环是非完美的,也就是并非所有语句都出现在最内层的情 况,映射及配置生成更是一个棘手的问题。虽然可以通过循环分离(fission)把部分非完美 循环分裂成多个完美循环来处理,但是遇到不同语句间有来回依赖的情况,循环分离就不 合法了。如果我们仍然希望挖掘多层并行性,除了要面对多个II如何确定的问题以外,如何 压缩过大的配置信息也是一个难点,因为非完美循环内部组成的复杂性会导致当内层迭代 次数较大时形成的kernel行数十分庞大。
[0007] 从已有的文献来看,目前主流的方法大都是进行单层流水,对于非完美的多层嵌 套循环,最多也仅仅做到了隐藏单独语句、合并两次内层流水的排空和装载阶段的程度,并 没有积极地重叠外层迭代。尤其是对于含有并列子循环的非完美嵌套循环,没有现成的方 法能够有效地挖掘外层并行性。

【发明内容】

[0008] 本发明旨在至少解决上述技术问题之一。
[0009]为此,本发明的一个目的在于提出一种可重构计算循环映射优化方法。
[0010] 为了实现上述目的,本发明的实施例公开了一种可重构计算循环映射优化方法, 包括以下步骤:S1:建立内外层循环模型,根据所述内外层循环模型确定最优内层迭代时间 间隔和最优外层迭代时间间隔;S2:根据所述最优内层迭代时间间隔得到内层流水,以及根 据所述最优外层迭代时间间隔得到外层流水核心;S3:将所述外层流水核心分割为第一预 设数量的段落,抽取每个段落的重复单元,将每个所述重复单元压缩为第二预设数量的拷 贝;S4:对每个重复单元,根据REGMap算法,构建原始兼容图,对所述原始兼容图进行压缩, 在压缩后的兼容图中搜索大小等同于需要生成配置信息的算子数量的最大团。
[0011] 根据本发明实施例的可重构计算循环映射优化方法,通过多层软流水和核心压缩 的优化方法,来降低非完美多层嵌套循环在可重构计算阵列上的计算时间和配置信息量, 从而提高了可重构处理器的性能;算法复杂度是多项式时间,满足实际的编译要求。
[0012] 另外,根据本发明上述实施例的可重构计算循环映射优化方法,还可以具有如下 附加的技术特征:
[0013] 进一步地,步骤S1进一步包括:
[0014] S101:建立所述内外层循环模型:
[0015] min L〇= I: {Ldx}+I: {Ilix ? (TCix-l)}+II〇 ? (TC〇-l)
[0016] s.t.IIix>RecMIIix
[0017] IURecMII。
[0019] IIix,II0eN+
[0020] x = l,2, ? ? ?,m
[0021] 其中,ILx表示第x个内层循环,L。表示总延时,Ldx表示I Lx的DFG的延时,Wdx表示ILx 的DFG的宽度,11 ix表示的内层迭代时间间隔,11。表示外层迭代时间间隔,TCix表示ILX的 内层TC,TC。表示外层TCJpe表示可用的计算单元数量,m表示内层循环的个数,RecMIIix表示 ILX在依赖约束下的最优迭代时间间隔,RecMII。表示外层在依赖约束下的最优迭代时间间 隔;S102:内层流水的宽度Wi、外层流水的宽度W。与各个II之间有如下关系:

[0025] ff〇 < Npe
[0026] 固定内层流水的宽度I,然后让最内层迭代时间间隔取最小,使得外层II。的下限 也最小,最终使得L。也能取到最小值。
[0027]进一步地,步骤S2进一步包括:S201:使用单层流水的方式,根据所述最优内层迭 代时间间隔,对内层各个部分分别进行流水调度,得到各个内层流水核心;S202:将各个内 层流水线首尾相接,得到一整条完整的内层流水;S203:根据所述最优外层迭代时间间隔得 到所述外层流水核心。
[0028]进一步地,步骤S3进一步包括:S301:把所述外层流水核心分割成所述第一预设数 量的段落,每个段落有不同的内层流水核心重复一定次数构成;S302:从每个段落中任意截 取行数相当于内层流水核心的行数的公倍数的部分,其中,如果是装入和排空阶段,需要补 全算子;如果段的行数小于所述公倍数,把整段全部截取;S303:将每个所述重复单元进一 步压缩为所述重复单元的元素,在配置信息中包含述重复单元的元素的数量。
[0029] 本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0030] 本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得 明显和容易理解,其中:
[0031 ]图1是本发明一个实施例的可重构计算循环映射优化方法的流程图;
[0032] 图2是本发明一个实施例的可重构计算循环映射优化方法中原是兼容图进行压缩 的不意图;
[0033] 图3(A)和图3(B)是本发明一个实施例的可重构计算循环映射优化方法的一个示 例的示意图。
【具体实施方式】
[0034] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1