1

给定两个矩阵 A 和 B,其中 B 是对称的(并且是半正定的),计算 A`*B*A 的最佳(最快)方法是什么?

目前,使用 BLAS,我首先使用 dsymm(引入临时矩阵 C)计算 C=B*A,然后使用 dgemm 计算 A`*C。

使用 BLAS 和 mkl 是否有更好(更快,无临时)的方法来做到这一点?

谢谢。

4

1 回答 1

1

我将提供某种答案:与一般情况 A*B*C 相比,您知道最终结果是对称矩阵。用 BLAS 子程序 dsymm 计算 C=B*A 后,你想计算 A'C,但你只需要计算矩阵的上对角线部分,并将严格的上对角线部分复制到下对角线部分。

不幸的是,似乎没有一个 BLAS 例程,您可以事先声明给定两个通用矩阵,输出矩阵将是对称的。我不确定为此编写自己的函数是否有益。这可能取决于矩阵的大小和实现。

编辑:这个想法最近似乎在这里得到解决:A Matrix Multiplication Routine that Updates Only the Upper or Lower Triangular Part of the Result Matrix

于 2013-03-01T12:29:41.753 回答