Optimization 优化Blas类操作-A`*B*A

Optimization 优化Blas类操作-A`*B*A,optimization,matrix,algebra,blas,Optimization,Matrix,Algebra,Blas,给定两个矩阵A和B,其中B是对称的(半正定的),计算A`*B*A的最佳(最快)方法是什么 目前,使用BLAS,我首先使用dsymm(引入临时矩阵C)计算C=B*A,然后使用dgemm计算A`*C 使用BLAS和mkl有更好的(更快,没有临时性的)方法吗 谢谢。我会给出某种回答:与一般情况A*B*C相比,你知道最终结果是对称矩阵。在使用BLAS子例程dsymm计算C=B*A之后,您需要计算A'C,但只需要计算矩阵的上对角线部分,并将严格的上对角线部分复制到下对角线部分 不幸的是,似乎没有一个BLA

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

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

使用BLAS和mkl有更好的(更快,没有临时性的)方法吗


谢谢。

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

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

编辑:
这个想法最近似乎在这里得到了解决:

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

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

编辑:
这个想法最近似乎在这里得到了解决:

另请参见并感谢@finnw。然而,在你提到的帖子中没有答案。这是我第三次看到这个问题,在SO中有一些轻微的修改(第一个是我自己的问题),缺乏答案让我相信你自己的建议是最快的。另请参阅并感谢@finnw。然而,在你提到的帖子中没有答案。这是我第三次看到这个问题,在SO中有轻微的修改(第一个是我自己的问题),缺乏答案让我相信你自己的建议是最快的。这个链接看起来确实很有趣。唉,它只节省了大约20%的运行时间,在我的特定应用程序中,我仍然需要将结果复制到下面的三角形中——这让我几乎没有任何收获。。。谢谢。这个链接看起来确实很有趣。唉,它只节省了大约20%的运行时间,在我的特定应用程序中,我仍然需要将结果复制到下面的三角形中——这让我几乎没有任何收获。。。谢谢