Answers:
并行几何多重网格很容易在结构化网格上实现。代数和非结构化多网格技术性更高,请参见此答案以获取实现的链接。
在乘法方法(例如循环)中,一次只能计算一个级别。由于级别数是,其中是自由度数,是粗化因子(通常在维度上约为或),因此该对数项不可删除。添加剂的方法牺牲一些恒定的因素,但可以同时计算所有的水平,从而减少对数因子。我还没有看到在真实硬件上进行的演示,其中并发性的提高证明常数方法较差,而加法的健壮性却有所降低。
高斯-塞德尔(Gauss-Seidel)是一种非常流行的平滑器,具有乘法功能,而且似乎无法有效并行化。对于结构化网格上的简单离散化,并且当不考虑内存带宽时,采用红黑高斯-赛德尔的经典解决方案是合理的。对于更复杂的问题和现代硬件,Adams(2001)展示了一种效率更高的算法。对于许多问题,在每个子域上使用独立的Gauss-Seidel的简单方法是完全令人满意的。Gauss-Seidel的替代方法是使用阻尼Jacobi或多项式平滑器,请参见Adams,Brezina,Hu和Tuminaro(2003)进行比较。这些平滑器的性能模型类似于任何其他模具计算,因此具有最佳的弱可伸缩性 足以覆盖延迟的子域。
实际上,粗网格可以迅速达到强大的可扩展性限制(超过此限制,添加更多进程会增加运行时间),因此它们应驻留在越来越小的MPI通信器上。这给实现增加了一些轻微的复杂性。对于其中粗级结构太多而无法继续进行粗化的问题,粗级求解可能会成为瓶颈。
为了测试各种并行的多重网格方法,我建议使用像PETSc这样的库,该库允许您用很少的用户代码运行许多不同的算法。