一直自己编程写算法,从年初开始尝试使用mpi对正交变换进行加速,效果不是很理想。这几天在测试各种qr变换组件,获取R阵,记录一下,方便日后总结。
1. Eigen的稀疏矩阵qr算法。R阵计算结果正确(和我自己的givens结果一致,正负号差异不影响结果),但速度太慢了,不实用。
2. 利用Eigen调用Suitespare的稀疏矩阵qr算法,速度很快,但R阵结果不正确。
3.经查,为保证结果正确,排序方法应采用FIX,同时,A阵中不能出现单列,即列中只有一个元素的列。上述问题处理后,SuiteSparse的qr计算结果R阵与givens变换结果一致,但计算时间增加15倍,待处理。
4.处理单列可通过增加一行方程实现。qr计算结果正确,需注意修改权重保证增加行后方程组的解一致。计算时间对30000*250000稀疏矩阵大概3秒左右,可接受。但无法处理降权操作,后续将针对性处理。