>我需要解决一大组(独立的(Ax=b线性问题。这不能并行化(或者更具体地说,这无论如何都是每个处理器的责任范围(。
Ax=b 集很小(最多 10x10(,但很密集(通常所有项都不为零(,并且 A 矩阵和 RHS 向量完全不同且独立。
使用 PETSc 解决大量小 Ax=b 问题的最有效/实用的方法是什么?
即,始终修改单个 A 矩阵和单个 b 向量并为每个系统求解的成本有多高?
在考虑了所有选项之后,PETSc 在处理这种情况方面不是很有效,因为需要一直用不同的值重建/重新填充矩阵,最终内存成本相对较高。我最终把PETSc放在一边。
既然你的A很小,为什么不试试直接的方法来解决它。SuperLU MT版本或SuperLU串行版本。
如果你同时拥有所有矩阵,你可以用它们制作一个大的块对角矩阵,这将是有效的(矢量化等(。