Scipy稀疏并行迭代求解器

时间:2018-11-25 15:04:23

标签: python parallel-processing scipy iteration solver

我需要用python解决相当大的线性系统(大约1e6 x 1e6,将来可能会更多)。矩阵以csr格式存储。 我尝试了scipy.sparse.linalg.spsolve,它是直接求解器,由于高RAM消耗而不适用。 我看了迭代求解器scipy.sparse.linalg.bicgstab和scipy.sparse.linalg.gmres。 这些能够并行计算吗?当我使用较小尺寸时,仅使用一个核心,而当我使用较大尺寸(1e6)时,则使用所有4个核心。

有人可以解释其中的区别吗?

这是我使用的一小段示例代码:

import numpy as np
import scipy.sparse as sp
import scipy.sparse.linalg as sp_la

n = int(1e6)

A = sp.spdiags(np.random.rand(3, n), [-1, 0, 1], n, n)
b = np.random.rand(n, 1)

x = sp_la.gmres(A, b)

我想在具有48 cpus的群集上运行代码,现在我正在笔记本电脑(4核)上尝试代码。

谢谢

0 个答案:

没有答案