并行直接线性求解器的效率

计算科学 线性求解器 并行计算 宠物
2021-12-12 18:26:04

我目前正在研究并行解决正定对称系统。我使用的并行直接求解器是 MUMPS。然而,与顺序直接求解器相比,并行直接求解器的性能和效率相当令人失望(我使用的是 Spooles)。图中未知数分别为 100k 和 200k。

我想知道并行直接求解器是否总是具有这种效率,否则我在设置 MUMPS 时可能会犯一些错误。

此外,我还考虑使用 PETSc 的迭代求解器,但我找不到使用块 jacobi 预处理器的好例子,所以如果有人能够提供 PCBJACOBI 和 PCASM 的例子,将不胜感激(我听说直接求解器可以在子域中使用,并通过使用此 PCASM 预条件器进行组合)。

在此处输入图像描述 在此处输入图像描述

1个回答

你的问题太小了。您必须考虑到要获得良好的效率,每个处理器必须有足够的工作来抵消通信成本。换句话说,存在一个阈值,即必须低于多少自由度,低于该阈值时效率会下降。

我不知道 MUMPS 的门槛在哪里。但是,仅举一个例子,对于有限元方法中的迭代求解器,通常每个处理器至少需要 50,000 到 100,000 个未知数。因此,如果您只有 200,000 个未知数,那么您将获得合理的可扩展性,可能是 4 个处理器,但可能不会超过。对于直接求解器来说,这个阈值很可能甚至很大,但我真的不知道。

如果你真的想测试这个,我建议你看一个相当大的问题——比如 1000 万个未知数——然后看看它是如何扩展的。这将告诉您有关强大可扩展性的一些信息。或者,您需要处理一系列问题——例如,大小是处理器数量的 100,000 倍——并测量解决这些问题需要多长时间。这将告诉你一些关于弱可扩展性的信息。