随着计算机技术的发展,日常计算中的计算能力不断提高,很多三维CFD流场计算的时间已大大缩短。相对而言,自动化程度更低,需要不断试错的网格生成过程仍然是大规模计算的主要性能瓶颈。并行网格生成技术的研究和应用是解决这一瓶颈的主要途径。


并行网格生成算法通常需利用区域分解(domain partition / domain decomposition)将原区域划分成子区域,并将子区域映射到不同处理器上进行处理;而子区域的共享边界被称为交界面(interface)。根据交界面网格生成和子区域内部网格(简称子网格)生成之间的先后关系,并行网格生成算法分为三类。


(1) 同步处置类:交界面网格和子网格同步生成。

(2) 后置处理类:先生成子网格,后生成交界面网格。

(3) 前置处理类:先生成交界面网格,后生成子网格。




根据子网格生成过程中通信和同步操作的强度,并行网格生成也分为三类。


(1)解耦式:各子网格独立生成,其过程几乎不涉及通信和同步。

(2)紧耦式:各子网格生成过程中需要频繁通信和同步,且通常这些通信和同步操作是没有规律且难以提前预测的。

(3)部分耦合式:各子网格生成过程需要一定量的通信和同步,这些通信和同步操作是有规律的。


此外,从不同的并行逻辑设计思路出发,并行网格生成算法分为问题并行(task parallel / problem parallel)和算法并行(algorithmparallel)两类。问题并行是分而治之思想在并行算法设计上的典型应用,也是并行网格生成算法研究的主流,其基本思想是利用区域分解将问题区域分成很多个子区域,随后并行生成子网格。问题并行算法的关键环节是区域分解及交界面的处理。以交界面的处理为例,首先,它可能会引入新的几何约束,在其附近生成低质量的单元;其次,交界面的处理可能涉及跨处理器操作,所涉及的通信和同步代价是决定整个并行算法效率的关键因素;此外,如何保证不同子网格在交界面上的一致性也是一个挑战。



算法并行则尝试发掘串行算法运行流程中存在的并行度,将算法组织成多个可并发执行的子任务的组合。算法并行的设计除需对串行算法的各个环节有透彻了解,以设计出合理的并行模型外,还需运用复杂的并行编程技巧来提高并行算法的效率,如通过异步机制来屏蔽因子任务之间的数据竞争或执行顺序依赖引起的通信同步费用。


此外,根据算法适用于共享内存系统还是分布式内存系统,或并行编程模型是分布式还是共享式,并行网格生成算法分为共享内存算法、分布式内存算法或两者耦合式。分布式内存系统是大型计算机的主流,因此分布式内存算法是目前并行网格生成算法研究的主流。



Back to top