我需要用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核)上尝试代码。
谢谢