高效的特征求解器

计算科学 本征系统
2021-12-02 08:44:31

我正在研究一个流动物理问题(2D),最终归结为解决特征值问题。即使对于 60 x 60 的网格大小,特征值问题中的矩阵最终也会有 12.6 亿个元素(这个矩阵必须迭代求解!)。有时矩阵是稀疏的,有时它不取决于要解决的问题的性质。

我使用用 Fortran 编写的ARPACK来解决这个问题。令人惊讶的是,MATLAB 解决相同特征值问题的速度至少比 Fortran 解决方案快 5 倍。(我想知道怎么做!)

我的问题是:在计算社区中是否有任何已知的技术可以加速 Eigen 求解器?

并行化 ARPACK 是我尝试过的一种解决方案,但仍然达不到 MATLAB 的水平

2个回答

MATLAB 的eigs函数只是调用 ARPACK。因此,如果您使用它,则没有区别,它们应该同样快。如果不是,则区别在于您自己的代码。

我不是这方面的专家,但据我所知,您的所有矩阵运算基本上最多只能简化为多项式时间算法。MatLab 作为特定用途的软件,可能会使用一些技巧来更快地获得结果(启发式、缓存或查找表)。如果你告诉他们数学很难,人们可能会觉得你很有趣,但大多数都是 NP 难或 NPC。ColPack 是另一个相关的软件库,它在图形着色方面做得很好。