发明名称 一种三维不可压缩管流的并行化方法
摘要 本发明了公开了一种三维不可压缩管流的并行化方法,它是一种面向分布式集群的并行化方法。本发明对传统的线性系统进行替换,通过引入网格条块的执行顺序,在不改变传统迭代方法性质的同时,提高了执行过程的数据局部性;通过对迭代空间进行区域分解和网格条块的重新排序,实现了方法的并行化;通过循环交错条块技术和增加时间维对迭代空间进行时滞划分,减小了执行过程的通信和同步开销;在迭代的实际执行过程中,构造了并行方法的性能自动调优器,通过探测找到效率最优情况下的参数数值组合,并固定参数值,实现并行方法的运行效率最优。
申请公布号 CN102520917A 申请公布日期 2012.06.27
申请号 CN201110420229.7 申请日期 2011.12.15
申请人 杭州电子科技大学 发明人 万健;朱礼廷;张纪林;毛洁;徐向华;蒋从锋;任永坚
分类号 G06F9/38(2006.01)I;G06F15/16(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 1.一种三维不可压缩管流的并行化方法,其特征在于该方法包括以下步骤:步骤1、迭代空间的网格条块划分:依据处理器数目P及处理器拓扑结构,利用区域分解法将空间计算区域划分成P个子空间;步骤2、沿时间轴方向对迭代空间进行划分:采用时滞技术,在迭代时间步上对每层迭代的子空间进行边界修正;定义有向图<img file="2011104202297100001DEST_PATH_IMAGE001.GIF" wi="57" he="22" />存放相邻网格块的数据依赖关系;若网格块<img file="838143DEST_PATH_IMAGE002.GIF" wi="16" he="25" />与网格块<img file="2011104202297100001DEST_PATH_IMAGE003.GIF" wi="18" he="26" />边界相连且正向迭代时<img file="633317DEST_PATH_IMAGE003.GIF" wi="18" he="26" />的更新顺序在<img file="988075DEST_PATH_IMAGE002.GIF" wi="16" he="25" />之前,则<img file="845173DEST_PATH_IMAGE004.GIF" wi="90" he="26" />,即<img file="2011104202297100001DEST_PATH_IMAGE005.GIF" wi="17" he="25" />的迭代更新依赖<img file="414826DEST_PATH_IMAGE003.GIF" wi="18" he="26" />条块中的边界数据;对迭代空间划分后,形成网格条块;步骤3、对网格条块进行重新排序:根据处理器个数,对所有的网格条块进行重新排序,实现并行化;步骤4、指定迭代方向:交错条块迭代算法分为奇数<img file="66387DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次和偶数<img file="423288DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代,并且奇数<img file="818497DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代和偶数<img file="367290DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代执行方向相反;步骤5、以网格条块为单位执行奇数<img file="517649DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代数据更新:执行奇数<img file="784682DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代更新,更新顺序按照重新排序之后各个子空间内的条块顺序;当更新奇数<img file="796631DEST_PATH_IMAGE006.GIF" wi="17" he="22" />中的"边界递减条块"和"边界偏移条块"后,需要将边界数据发送给相邻的"边界递增条块"和"边界偏移条块",而接收数据的条块必须在接收完数据后才进行迭代更新;空间条块的边界网格点必须发送给其它相邻子空间以维护数据依赖关系;"边界递减条条块"在执行更新后将自身边界网格数据发送给"边界递增条块";"边界递增条块"必须在接受其它子空间条块发送的边界网格数据后才执行更新;"边界偏移条块"在执行前后需要接收数据和发送数据;其余的条块为"边界不变条块",其自身计算不需要其它处理器中网格条块的边界值,也不需要发送自身网格数据给其它条块;所述的"边界递减条块"为每迭代计算一次边界减少一层的网格条块,"边界偏移条块"为每迭代计算一次边界偏移一层的网格条块,"边界不变条块"为迭代过程中边界不发生变化的网格条块;步骤6、以网格条块为单位执行偶数<img file="199931DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代数据更新;执行偶数<img file="521191DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次迭代更新,更新顺序按照每个子空间内的条块顺序反序执行;当更新偶数<img file="275520DEST_PATH_IMAGE006.GIF" wi="17" he="22" />次中的"边界递减条块"和"边界偏移条块"后,需要将边界数据发送给相邻的"边界递增条块"和"边界偏移条块",而接收数据的条块必须在接收完数据后才进行迭代更新;步骤7、反复执行步骤5和步骤6,直至整个计算过程达到指定的收敛标准。
地址 310018 浙江省杭州市下沙高教园区2号大街