LAPACK 的 dpstrf 和 dpst2 的旋转策略有什么不同,为什么?

计算科学 线性代数 拉帕克
2021-12-05 09:29:31

dpstfdpstrf有时会给出不同的枢轴结果。当然我可以阅读源代码,但我不明白它的想法。由于旋转是为了 Cholesky 分解的稳定性,因此其中之一更稳定。哪个以及为什么另一个存在?

1个回答

不同之处在于他们使用的是哪个 BLAS 级别。TRF 是 BLAS3,TF2 是 BLAS2。粗略地说,BLAS 3 级例程针对具有高速缓存的计算机进行了优化,以便它们可以执行块调用。BLAS 2 针对可能具有共享内存的矢量计算机进行了优化。

正如您在代码(第 209 行)中看到的那样,如果最佳块大小结果大于矩阵大小(这意味着不可能使用阻塞算法)或小于或等于 1,则 DSTRF 回落到未阻塞的版本 DPSTF2。