在 Python 中并行化线性方程组(bicgstab)的 Scipy 迭代方法

计算科学 线性代数 Python 并行计算 稀疏矩阵
2021-12-13 20:38:39

我需要求解线性方程组 Ax = b,其中 A 是大小为 500 000 x 500 000 的稀疏 CSR 矩阵。我正在使用 scipy.bicgstab,在我的 PC 上求解这个系统需要将近 10 分钟,我需要重复这个计算是循环的,所以需要加快计算速度。

有没有办法以某种方式使用 Python 并行化计算,例如使用多处理?或者也许还有另一种方法可以缩短计算时间或将问题拆分为许多较小的问题?我读过关于 PyTrilinos 但找不到任何例子..

1个回答

看看 PETSc 库,它有一个 python 接口。这允许您使用任意扩展的 MPI 并行性。

https://www.mcs.anl.gov/petsc/

它有几种 bicgstab 方法的变体,而且预处理器可能比 scipy 多 100 倍。说到这里,你用的是什么预处理器?这对于确定收敛速度非常重要。