如何在 MATLAB 中并行计算稀疏对称矩阵的特征值?

计算科学 本征系统 matlab 稀疏矩阵
2021-12-22 11:36:20

我有一个对称且稀疏的相似矩阵。如何在 MATLAB 中并行计算该矩阵的特征值?

2个回答

MathWorks 认为这不是一个好主意他们对非多线程的基本防御eigs是 MATLAB 稀疏矩阵向量产品不会从多线程中显着受益。如果您对更有效地计算特征值感兴趣,我建议您查看在 scicomp 的另一个答案中讨论的一些库。

如果只需要最大和最小特征值,可以分别使用法和逆幂法。

幂法需要在每次迭代时都有一个矩阵向量乘积,可以并行执行。如果您使用的是分布式计算机,您可以显式地将向量和矩阵的一定数量的行分配给每个处理器并计算结果向量的一部分(这称为逐行分解)。可以使用 all-gather 操作将这些部分结果组合成单个结果。或者,如果您使用的是对称计算机,Matlab 的并行计算工具箱有一个并行循环操作,可以让您在不过多更改顺序代码的情况下执行此操作。

逆方法需要求解线性方程组。同样,您几乎可以并行实现任何您想要的线性系统求解器方法。如果您选择使用共轭梯度法,它也需要在每次迭代时都有一个矩阵向量乘积,可以使用 Matlab 的 PCT 的并行 for 循环操作并行执行。