缓存先前对lapacke gelsd的调用的中间结果

时间:2018-10-17 12:45:19

标签: least-squares lapacke

一个迭代算法在每次迭代中都使用一列B调用LAPACKE_sgelsd。后续调用通常使用相同的A矩阵。我认为,如果A矩阵未更改,则性能的实质改进将是缓存或某种方式重用上一次迭代的中间结果。这应该有点类似于为B传递多列时可能获得的收益。这是正确的吗?实施将有多困难?如何完成?它使用openblas。谢谢。

1 个答案:

答案 0 :(得分:0)

代替缓存中间结果,可以计算并缓存伪逆。可以通过this方法进行计算,总结为:

  1. 计算SVD
  2. 将所有“小”奇异值设置为零
  3. 反转所有非零的奇异值
  4. 再次将三个矩阵相乘
  5. 伪逆是结果的转置。

结果是伪逆* B。