一种基于迭代空间条块的并行有限差分模版方法技术

技术编号:6628398 阅读:239 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于迭代空间条块的并行有限差分模版方法。传统的并行化迭代方法在迭代内和迭代间都需要同步操作以维护数据依赖关系。本发明专利技术首先通过对迭代空间进行时间轴方向划分成网格条块,实现对同一网格块进行递归式多次迭代步更新,从而在不改变串行模版迭代方法性质的同时,提高条块内数据局部性。然后通过对网格条块重排序,实现交错条块有限差分模版方法的并行化。本发明专利技术方法比传统的区域分解方法和红黑排序并行方法具有更好的数据局部性,并行效率和可扩展性。

【技术实现步骤摘要】

本专利技术属于工程计算领域,涉及。
技术介绍
随着科学计算需要解决的问题渐趋复杂和并行计算机的迅速发展,并行计算已成为解决大规模并行科学计算问题必不可少的手段。在计算数学和计算物理等科学与工程计算领域,很多问题最终都归结为求解稀疏线性代数方程组。因此,在并行计算机上高效求解大规模稀疏线性代数方程组已成为当前科学计算领域的一项重要任务。由于受舍入误差、计算机内存和计算复杂度的限制,对大规模问题,直接求解该类方程组几乎是不可能的,通常采用有限差分模版计算方法,迭代法的主要思想是通过构造有效的迭代格式,在有限步数内收敛于方程的精确解。有限差分模版并行方法的实现一直是数值计算的重要研究对象。传统的做法是通过使用基于区域分解的多色排序方法来实现面向集群的并行GS方法,但是当数据量增大时,数据局部性成下降趋势,并且在每次迭代计算过程,都需要通信和同步。另一方面,循环分块技术可以提高循环并行度和数据局部性优化。为此,研究人员对迭代空间分块做了很多的研究。这些研究主要集中在两个方面(1)数据局部性优化研究;(2)提高并行效率的分块尺寸/形状研究。通过数据依赖向量实现数据分块使其能够最大化复用,但是分块技术会引入数据块的空间依赖性,导致其基于空间条块的流水线执行方式不利于并行执行。 但模版迭代方法并行化还有4个问题需要进一步的优化数据局部性问题。大多数方法能够有效的提高迭代内数据局部性,但对迭代间的数据局部性优化效果有限。可扩展性问题。传统的并行化迭代方法在迭代内和迭代间都需要同步操作以维护数据依赖关系。处理机进行全局的同步,会增加开销时间,当处理机的台数增多时,全局同步的代价变得更加重要,并且影响方法的可扩展性。通信和同步开销问题。由于传统的并行化方法需要在每次迭代过程中通过通信操作得到边界数据,通信开销制约了并行方法的效率。并且当问题给定时,随着处理机台数的增大,并行纯计算时间在减少,而通信时间在不断增加,这必将影响并行方法的可扩展性。依赖关系问题。迭代空间划分所引入的条块依赖关系严重阻碍了循环的并行化。
技术实现思路
本专利技术的目的在于鉴于现有方法存在的上述问题,提出基于迭代空间条块的并行有限模版方法。在不增加数据通信量的情况下,通过负超平面对迭代空间进行划分,减少通信启动开销和同步时间,提高数据局部性。并且通过对空间迭代块的重新排序,改变块间数据依赖性,有效地实现迭代方法的并行化。本专利技术解决技术问题所采用的技术方案是本专利技术首先通过对迭代空间进行时间轴方向划分成网格条块,实现对同一网格块进行递归式多次迭代步更新,从而在不改变串行模版迭代方法性质的同时,提高条块内数据局部性。然后通过对网格条块重排序,实现交错条块有限差分模版方法的并行化。步骤1根据处理器拓扑进行空间计算区域划分依据处理器数目P及处理器的拓扑结构,将空间计算区域划分为Pl XP2个子空间 domain,其中 Pl XP2=P 且 P1=P2 ; 步骤2指定迭代方向交错条块迭代方法分为奇数k次迭代和偶数k次迭代,设定奇数k次迭代与偶数k次迭代执行方向相反;步骤3对子空间进行网格条块划分通过时间轴将各子空间划分为多个网格条块,同串行迭代方法,并且奇数k次和偶数k 次划分方向相反;步骤4对网格条块重新排序根据处理器数目P按照CydiC(P)排列方法对所有的网格条块进行重排序; 步骤5以网格条块为单位执行奇数k次迭代数据更新执行奇数k次迭代更新,更新顺序参照重排序之后的网格条块序;当更新奇数k次中的发送条块和混合条块后,将边界数据发送给相应的接收条块和混合条块,而接收数据的条块在接收完数据后再进行迭代更新;步骤6以网格条块为单位执行偶数k次迭代数据更新执行偶数k次迭代更新,更新顺序参照重排序之后的网格条块序;当更新偶数k次中的发送条块和混合条块后,将边界数据发送给相应的接收条块和混合条块,而接收数据的条块在接收完数据后再进行迭代更新。本专利技术具有的有益效果是1、本专利技术方法通过网格条块重排序减少了 cache缺失率、通信启动和同步次数。2、本专利技术方法比传统的区域分解方法和红黑排序并行方法具有更好的数据局部性,并行效率和可扩展性。附图说明图1为迭代空间交错条块串行模版方法,⑴为从1到k次的正向执行,(2)为从 k+Ι到业次的反向执行。其中不同线条表示不同时间的迭代范围。图2为本专利技术方法的系统框图。图3为三维迭代空间的两类条块划分方法,(1)为对称遍历条块串行执行的前半部分对称遍历,其中迭代步是从第1到k次迭代,(2)为对称遍历条块串行执行的后半部分对称遍历,其中迭代步是从第k+l到业次迭代,(3)为对称遍历条块重排后的前半部分对称遍历,其中迭代步是从第1到k次迭代,(4)为对称遍历条块重排后后半部分对称遍历其中迭代步是从第k+l到业次迭代。图4为条块超平面划分俯视图。图5为图3所示两类条块划分方法的条块依赖图,(1)为图3(1)和图3(2)中划分方法的条块依赖图,( 为图3C3)和图3(4)中划分方法的条块依赖图。其中数字前面的标号表示不同的迭代方向f表示奇数次迭代,b表示为偶数次迭代。图6为四个子区域的并行化,(1)为对称遍历过程的正向部分,(2)为对称遍历过程反向部分。具体实施例方式下面结合附图和实施例,对本专利技术的具体实施方案作进一步详细描述 传统的迭代方法执行序过程如下在一次迭代内部依据网格点的顺序,依次对所有网格点进行迭代更新操作 for ( t=l; t<=T; t++ ) for ( i=l; i<N-l; i++ ) for ( j=l; j<N-l; j++ )A = (A +A +A + A + A)/5其中T表示迭代次数,NXN表示矩阵的大小。在上述方法中,数据复用的方式共有以下四种行优先存储格式下,在j循环中复用A ,A …… 在j循环中,更新A 、A 和A 过程中复用A 。在i 循环中,更新 A 、A 和 A 过程中复用 A 。在时间步中,复用A。由于数据存取位置相近,因此出现第一类和第二类数据复用。当cache的容量C 大于2N (N为一维边界长度)时,A与A在行优先存储格式下相邻2N个数据,因此会出现第三类数据复用。当N2小于C时,所有数据都会一次性读取到cache中, 因此会出现第四类数据复用即提高了数据空间局部性。但这种“串行”执行序不仅导致其数据依赖关系阻碍了迭代方法并行化执行,而且当数据量大时,其数据局部性较差。其原因在于当数组大于cache容量时,本次更新的数据在下一次更新之前已经被写回内存。而且当数据量大时,传统迭代方法中多次迭代会导致数据cache的容量缺失。此外,多次迭代使数据的地址转换信息会周期性地在TLB中进行存取,也是影响其性能的一个重要因素。当矩阵规模增加时,大量的TLB容量缺失会严重影响程序的性能。因此,本专利技术采取迭代空间条块串行迭代执行序,其核心思想是改变以往传统的以迭代次序为执行序的特点,将迭代空间分块引入执行序中,如图1所示。本专利技术还通过网格条块重排序,来实现交错条块有限差分模版方法的并行化。其具体步骤描述如图2所示步骤1根据处理器拓扑进行空间计算区域划分依据处理器数目P及处理器的拓扑结构,将空间计算区域划分为Pl XP2个子空间 i/offlai/ ,其中 Ρ1ΧΡ本文档来自技高网
...

【技术保护点】
1.一种基于迭代空间条块的并行有限差分模版方法,其特征在于该方法包括如下步骤:步骤1根据处理器拓扑进行空间计算区域划分,具体是:依据处理器数目P及处理器的拓扑结构,将空间计算区域划分为P1×P2个子空间sub_domain,其中P1×P2=P且P1=P2;步骤2指定迭代方向,具体是:交错条块迭代方法分为奇数k次迭代和偶数k次迭代,设定奇数k次迭代与偶数k次迭代执行方向相反;步骤3对子空间进行网格条块划分,具体是:将各子空间划分为多个网格条块,并且奇数k次和偶数k次划分方向相反;步骤4对网格条块重新排序,具体是:根据处理器数目P按照cyclic(P)排列方法对所有的网格条块进行重排序;步骤5以网格条块为单位执行奇数k次迭代数据更新,具体是:执行奇数k次迭代更新,更新顺序参照重排序之后的网格条块序;当更新奇数k次中的发送条块和混合条块后,将边界数据发送给相应的接收条块和混合条块,而接收数据的条块在接收完数据后再进行迭代更新;步骤6以网格条块为单位执行偶数k次迭代数据更新,具体是:执行偶数k次迭代更新,更新顺序参照重排序之后的网格条块序;当更新偶数k次中的发送条块和混合条块后,将边界数据发送给相应的接收条块和混合条块,而接收数据的条块在接收完数据后再进行迭代更新。...

【技术特征摘要】

【专利技术属性】
技术研发人员:张纪林徐向华万健蒋从锋张伟任永坚
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:86

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

1