我在一些稀疏矩阵上测试了Eigen的SparseLU和BicGSTAB方法,这些稀疏矩阵是密集的对应物。尺寸范围从3000 * 3000到16000 * 16000。所有案例都表明,SparseLU比BicGSTAB方法快13%左右。
我没有为BiCGSTAB提供RowMajor稀疏矩阵,或给它任何预处理器。这可能是缓慢的原因。
所以我想知道,如果我做好两种方法,哪种方法应该更快?
矩阵大小是否达到数百万*百万?
非常感谢!
答案 0 :(得分:0)
您已经提到了性能差异的主要原因。 当您选择“正确”的预处理器时,迭代方法会变得更快。
您可能会参考的预处理器的示例列表是:
每个预处理器都有一些应该调整的参数。
答案 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
希望这有帮助。