哪个稀疏线性求解器更快? SparseLU还是BiCGSTAB?

时间:2016-03-24 02:20:07

标签: linear-algebra sparse-matrix eigen preconditions

我在一些稀疏矩阵上测试了Eigen的SparseLU和BicGSTAB方法,这些稀疏矩阵是密集的对应物。尺寸范围从3000 * 3000到16000 * 16000。所有案例都表明,SparseLU比BicGSTAB方法快13%左右。

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

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

矩阵大小是否达到数百万*百万?

非常感谢!

2 个答案:

答案 0 :(得分:0)

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

您可能会参考的预处理器的示例列表是:

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

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

答案 1 :(得分:0)

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

查看Jonathan Shewchuk的这篇文章,了解CG的一个很好的解释。 (https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf)。

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

希望这有帮助。