我刚刚为混合 Dirichlet-Neumann 边界值问题实现了一个代数多重网格求解器,并且惊讶地发现与一个简单的迭代求解器相比,它对于 2048x2048 和 4096x4096 等大问题的加速。我的下一步是并行实现它。如果 Multigrid 如此有用,我相信人们愿意(并且我认为)为数百万个处理器实现它。我的问题是:大规模实施代数多重网格有哪些挑战/瓶颈?深入了解这一点以便能够在此阶段生成适度优化的代码将是非常有趣的。
在数百万个处理器上实现代数多重网格的挑战
计算科学
pde
并行计算
多重网格
百亿亿次
多核
2021-11-27 10:54:02
1个回答
我绝不是专家,但我会分享一些我听说过的挑战。一个挑战是(这可能取决于您如何选择 c 点)以避免节点之间的广泛通信,您希望矩阵具有良好的结构。例如,假设您正在解决有限元问题。然后,您希望您的节点以这样的方式排序,以便几何上靠近的节点位于同一处理器上。这将导致矩阵具有某种带状结构。这样,当您选择 c 点时,每个处理器都不必与每个其他处理器进行比较(以确定哪些点应该是 c 点,哪些应该是 f 点)。
另一个重要问题是粗化网格时会发生什么。当您获得越来越粗糙的网格时,您将不得不处理负载不平衡。例如,当您到达非常粗糙的网格时,某些处理器可能最终只包含 fpoints。在这些网格级别上,这些节点不会做任何事情。同时其他节点可能包含许多 cpoints 并且会很忙。
这在很大程度上与您如何选择 c 点/f 点网格有关,但希望这会有所帮助。实际上,我只是编写了自己的 AMG 求解器,并在尝试并行化时遇到了同样的问题。祝你好运。