专利名称:一种三维不可压缩管流的并行化方法
一种三维不可压缩管流的并行化方法技术领域
本发明属于流体力学数值模拟领域,涉及一种三维不可压缩管流的并行化方法。
技术背景
在流体力学数值模拟中,磁流体管流的数值模拟研究是聚变反应堆双冷或者双功能液态锂铅包层的研究的热点之一。在聚变反应堆包层应用中, 要想得到正确的数值模拟解,必须保证垂直于外加磁场壁面附近的哈德曼层(有一定数量的网格。实际的磁流体管流的数值模拟当中由于外加磁场和流动的液态金属的相互作用以及网格要求的特殊性导致网格规模大及迭代求解过程缓慢,常常持续数小时或数天,因此必须采用并行方法才能完成磁流体管流的数值模拟。
在计算流体力学数值模拟中,并行技术一般采用物理区域分割并行方法,计算网格划分和计算区域分解是实现粗粒度并行的最直接有效的任务分配策略。区域分解方法因其适用于构造并行算法的特点,被逐渐推广到CFD领域,并在近年来发展迅速,已经成为并行计算中最活跃的研究之一,在流体力学方面都有着重要的应用。
有限差分方法的并行一直是数值计算的重要研究对象,关于有限差分的并行化, 还有4个问题需要进一步的优化。(1)数据局部性问题。传统的迭代方法,对迭代间的数据局部性优化效果有限。(2)可扩展性问题。传统的并行化迭代算法在迭代内和迭代间都需要同步操作以维护数据依赖关系。处理机进行全局的同步,会增加开销时间,当处理机的台数增多时,全局同步的代价变得更加重要,并且影响算法的可扩展性。(3)通信和同步开销问题。由于传统的并行化算法需要在每次迭代过程中通过通信操作得到边界数据,通信开销制约了并行算法的效率。并且当问题给定时,随着处理机台数的增大,并行纯计算时间在减少,而通信时间在不断增加,这必将影响并行算法的可扩展性。(4)数据依赖关系问题。 迭代空间划分所引入的条块依赖关系严重阻碍了循环的并行化,大量的Cache缺失和TLB 容量缺失会以及通信开销严重影响传统迭代算法程序的性能,因此需要研究减少通信时间的新方法。发明内容
本发明提出了三维不可压缩管流的并行化方法,它面向分布式集群并具有自动调优的功能,通过使用交错条块和网络条块重排序技术,提高并行执行的性能。
本发明所采用的技术方案是本发明是将迭代空间分块引入到执行序中,通过时间轴方向将迭代空间划分成网格条块,实现了对同一网格块进行递归式多次迭代步更新,从而在不改变原有迭代方法性质的同时,提高了条块内数据局部性;通过改变条块网格条块间数据依赖关系,提高条块执行的并行度。
本发明具体步骤为1、迭代空间的网格条块划分依据处理器数目P及处理器拓扑结构,利用区域分解法将空间计算区域划分成P个子空间。
2、沿时间轴方向对迭代空间进行划分采用时滞技术,在迭代时间步上对每层迭代的子空间进行边界修正。定义有向图g(F,£)存放相邻网格块的数据依赖关系。若网格块Vi与网格块、边界相连且正向迭代时~的更新顺序在Vj之前,则<巧,,>65,即巧的迭代更新依赖、条块中的边界数据。对迭代空间划分后,形成网格条块。
3、对网格条块进行重新排序。根据处理器个数,对所有的网格条块进行重新排序, 实现并行化。
4、指定迭代方向。交错条块迭代算法分为奇数β次和偶数β次迭代,并且奇数β 次迭代和偶数β次迭代执行方向相反。
5、以网格条块为单位执行奇数β次迭代数据更新。执行奇数β次迭代更新,更新顺序按照重新排序之后各个子空间内的条块顺序。当更新奇数β中的“边界递减条块“ 和“边界偏移条块“后,需要将边界数据发送给相邻的“边界递增条块“和“边界偏移条块",而接收数据的条块必须在接收完数据后才进行迭代更新。空间条块的边界网格点必须发送给其它相邻子空间以维护数据依赖关系。“边界递减条条块“在执行更新后将自身边界网格数据发送给“边界递增条块“。“边界递增条块“必须在接受其它子空间条块发送的边界网格数据后才执行更新。“边界偏移条块“在执行前后需要接收数据和发送数据。其余的条块为“边界不变条块“,其自身计算不需要其它处理器中网格条块的边界值, 也不需要发送自身网格数据给其它条块。
所述的丨丨边界递减条块丨丨为每迭代计算一次边界减少一层的网格条块,丨丨边界偏移条块“为每迭代计算一次边界偏移一层的网格条块,“边界不变条块“为迭代过程中边界不发生变化的网格条块。
6、以网格条块为单位执行偶数β次迭代数据更新。执行偶数P次迭代更新,更新顺序按照每个子空间内的条块顺序反序执行。当更新偶数S次中的“边界递减条块“ 和“边界偏移条块“后,需要将边界数据发送给相邻的“边界递增条块“和“边界偏移条块“,而接收数据的条块必须在接收完数据后才进行迭代更新。
7、反复执行步骤5和步骤6,直至整个计算过程达到指定的收敛标准。
本发明的有益效果所有的处理器可以同时对它们的子空间进行处理;连续两次正反扫描过程中,方法的工作集不变;每执行G次迭代操作,通信一次;采用阻塞式通信, 通过计算和通信叠加,对方法的通信进行了优化。
本发明所提出的一种三维不可压缩管流的并行化方法具有良好的并行效率和可扩展性。另外,对并行计算过程中的条块大小及内部迭代次数β等参数,针对不同的体系结构下,选择最优的参数,实现了并行的运行效率最优。
图1是对迭代空间进行数据划分的示意图。4
图2是条块生长过程的示意图。
图3是四维迭代空间的两类条块划分方法示意图。
图4是两类条块划分方法的条块依赖图。
图5是多个子区域的并行化的示意图。
具体实施方式
下面结合附图对本方法的具体实施方式
作进一步详细的说明。
本发明提出的一种三维不可压缩管流的并行化方法,它面向分布式集群并具有自动调优的功能,对传统的线性系统进行替换,通过引入网格条块序的执行顺序,在不改变传统迭代方法性质的同时,提高了执行过程的数据局部性;通过对迭代空间进行区域分解和网格条块的重新排序,实现了并行化;通过循环交错条块技术和增加时间维对迭代空间进行时滞划分,减小了执行过程的通信和同步开销;在迭代的实际执行过程中,构造了并行技术的性能自动调优器,通过探测找到效率最优情况下的参数数值组合,并固定参数值,实现并行方法的运行效率最优。
对迭代空间的网格条块划分依据处理器数目P及处理器拓扑结构,利用区域分解法将空间计算区域划分成P个子空间。图1中将迭代空间划分成了 2x2x3个子空间。
沿时间轴方向对迭代空间进行划分采用时滞技术,在迭代时间步上对每层迭代的子空间进行边界修正。定义有向图G(RS)存放相邻网格块的数据依赖关系。若网格块ι与网格块。边界相连且正向迭代时^的更新顺序在&之前,则 <巧巧>€5,即巧的迭代更新依赖&条块中的边界数据。对迭代空间划分后,形成网格条块。图2为子空间边界的修正过程,每一次迭代操作,在三个方向上分别偏移一层边界。
对网格条块进行重新排序根据处理器个数,对所有的数据条块进行重新排序,以实现并行化执行。图3给出了四维迭代空间(空间维+时间维)迭代空间的两种交错划分,对应的网格条块依赖关系如图4所示。图3和图4的左半部分显示网格条块按条块顺序串行执行的迭代更新,从正向第1块tile(l)到第12块数据tile (12),然后从第12块 tile (12)到第1块数据tile (1),长度为12,因此没有并行度。图3和图4的右半部分显示,通过增加边界条块进而改变网格条块的执行顺序,可以实现四个进程的并行执行迭代更新,并行度为4。四个进程在正向执行条块迭代更新过程中,分别执行所属第一个条块后执行同步操作以维护条块间的数据依赖关系。同样四个进程在反向执行条块更新过程中, 分别在执行所属第一个条块后执行同步操作以维护条块间的数据依赖关系,显然,第二种划分的执行速度是第一种划分方式的四倍。通过改变条块网格条块间数据依赖关系,提高条块执行的并行度。
指定迭代方向。交错条块迭代算法分为奇数β次和偶数β次迭代,并且奇数β次迭代和偶数β次迭代执行方向相反。
以网格条块为单位执行奇数β次迭代数据更新。执行奇数β次迭代更新,更新顺序按照重新排序之后各个子空间内的条块顺序。当更新奇数0中的“边界递减条块“ 和“边界偏移条块“后,需要将边界数据发送给相邻的“边界递增条块“和“边界偏移条块",而接收数据的条块必须在接收完数据后才进行迭代更新。空间条块的边界网格点必须发送给其它相邻子空间以维护数据依赖关系。“边界递减条条块“在执行更新后将自身边界网格数据发送给“边界递增条块“。“边界递增条块“必须在接受其它子空间条块发送的边界网格数据后才执行更新。“边界偏移条块“在执行前后需要接收数据和发送数据。其余的条块为“边界不变条块“,其自身计算不需要其它处理器中网格条块的边界值, 也不需要发送自身网格数据给其它条块。
所述的“边界递减条块“为每迭代计算一次边界减少一层的网格条块,“边界偏移条块“为每迭代计算一次边界偏移一层的网格条块,“边界不变条块“为迭代过程中边界不发生变化的网格条块。
以网格条块为单位执行偶数β次迭代数据更新。执行偶数β次迭代更新,更新顺序按照每个子空间内的条块顺序反序执行。当更新偶数β次中的“边界递减条块“和“边界偏移条块“后,需要将边界数据发送给相应的“边界递增条块“和“边界偏移条块“, 而接收数据的条块必须在接收完数据后才进行迭代更新。
反复执行上述奇数β次迭代和偶数β次迭代数据更新,直至整个计算过程达到指定的收敛标准。图5为整个的并行执行过程。
本发明分开了一种三维不可压缩管流的并行化方法,它对传统的线性系统进行替换,通过将网格条块序引入串行方法的执行顺序,在不改变传统迭代方法性质的同时,提高了执行过程的数据局部性;通过对迭代空间进行区域分解和网格条块的重新排序,实现了并行化;通过循环交错条块技术和增加时间维对迭代空间进行时滞划分,减小了执行过程的通信和同步开销;在迭代的实际执行过程中,构造了并行技术的性能自动调优器,通过探测找到效率最优情况下的参数数值组合,并固定参数值,实现并行化方法的运行效率最优。
权利要求
1. 一种三维不可压缩管流的并行化方法,其特征在于该方法包括以下步骤 步骤1、迭代空间的网格条块划分依据处理器数目P及处理器拓扑结构,利用区域分解法将空间计算区域划分成P个子空间;步骤2、沿时间轴方向对迭代空间进行划分采用时滞技术,在迭代时间步上对每层迭代的子空间进行边界修正;定义有向图σ(「勾存放相邻网格块的数据依赖关系;若网格块巧与网格块、边界相连且正向迭代时^的更新顺序在r, ζ前,则<Vj,V/ >eS,即ι的迭代更新依赖、条块中的边界数据;对迭代空间划分后,形成网格条块;步骤3、对网格条块进行重新排序根据处理器个数,对所有的网格条块进行重新排序,实现并行化;步骤4、指定迭代方向交错条块迭代算法分为奇数0次和偶数β次迭代,并且奇数β 次迭代和偶数β次迭代执行方向相反;步骤5、以网格条块为单位执行奇数β次迭代数据更新执行奇数β次迭代更新,更新顺序按照重新排序之后各个子空间内的条块顺序;当更新奇数β中的“边界递减条块“ 和“边界偏移条块“后,需要将边界数据发送给相邻的“边界递增条块“和“边界偏移条块“,而接收数据的条块必须在接收完数据后才进行迭代更新;空间条块的边界网格点必须发送给其它相邻子空间以维护数据依赖关系;“边界递减条条块“在执行更新后将自身边界网格数据发送给“边界递增条块“;“边界递增条块“必须在接受其它子空间条块发送的边界网格数据后才执行更新;“边界偏移条块“在执行前后需要接收数据和发送数据;其余的条块为“边界不变条块“,其自身计算不需要其它处理器中网格条块的边界值,也不需要发送自身网格数据给其它条块;所述的“边界递减条块“为每迭代计算一次边界减少一层的网格条块,“边界偏移条块“为每迭代计算一次边界偏移一层的网格条块,“边界不变条块“为迭代过程中边界不发生变化的网格条块;步骤6、以网格条块为单位执行偶数β次迭代数据更新;执行偶数β次迭代更新,更新顺序按照每个子空间内的条块顺序反序执行;当更新偶数β次中的“边界递减条块“ 和“边界偏移条块“后,需要将边界数据发送给相邻的“边界递增条块“和“边界偏移条块“,而接收数据的条块必须在接收完数据后才进行迭代更新;步骤7、反复执行步骤5和步骤6,直至整个计算过程达到指定的收敛标准。
全文摘要
本发明了公开了一种三维不可压缩管流的并行化方法,它是一种面向分布式集群的并行化方法。本发明对传统的线性系统进行替换,通过引入网格条块的执行顺序,在不改变传统迭代方法性质的同时,提高了执行过程的数据局部性;通过对迭代空间进行区域分解和网格条块的重新排序,实现了方法的并行化;通过循环交错条块技术和增加时间维对迭代空间进行时滞划分,减小了执行过程的通信和同步开销;在迭代的实际执行过程中,构造了并行方法的性能自动调优器,通过探测找到效率最优情况下的参数数值组合,并固定参数值,实现并行方法的运行效率最优。
文档编号G06F15/16GK102520917SQ201110420229
公开日2012年6月27日 申请日期2011年12月15日 优先权日2011年12月15日
发明者万健, 任永坚, 张纪林, 徐向华, 朱礼廷, 毛洁, 蒋从锋 申请人:杭州电子科技大学