哪种稀疏线性解算器更快?SparseLU或BiCGSTAB



我在一些稀疏矩阵上测试了Eigen的SparseLU和BicGSTAB方法,这些稀疏矩阵的密集对应体的大小在3000*3000到16000*16000之间。所有案例表明,SparseLU比BicGSTAB方法快13%左右。

我没有给BiCGSTAB提供RowMajor稀疏矩阵,也没有给它任何预处理。这可能是慢的原因。

所以我想知道,如果我两种方法都做得好,哪一种应该更快?

如果矩阵大小增加到数百万,情况如何?

非常感谢!

您已经提到了性能差异的主要原因。当你选择"正确的"预处理器时,迭代方法会变得更快。

你可以参考的一个预处理器列表示例是:

  • 雅各比
  • SOR
  • ILU
  • 多重网格

每个预处理器都有一些参数,这些参数也应该调整。

线性求解器的选择与矩阵的特征值/特征向量的分布有很大关系。如果你有一个对称正定矩阵,那么共轭梯度是一个很好的选择。迭代次数取决于条件数(最大特征值/最小特征值)。对于从椭圆算子导出的矩阵,条件数随着矩阵的大小而增加。

查看Jonathan Shewchuk的这篇文章,了解关于CG的精彩解释。(https://www.cs.cmu.edu/~地震论文/无痛共轭梯度.pdf)。

对于其他矩阵类型,可以根据本征属性使用GMRES等。看看这篇论文http://www.sam.math.ethz.ch/~mhg/pub/biksm.pdf

希望这能有所帮助。

相关内容

  • 没有找到相关文章