当 B 是犰狳中的对称矩阵时的 A * B 计算

Posted

技术标签:

【中文标题】当 B 是犰狳中的对称矩阵时的 A * B 计算【英文标题】:A * B computation when B is a symmetric matrix in armadillo 【发布时间】:2018-05-24 18:31:37 【问题描述】:

在犰狳中有什么方法可以将一个对称矩阵乘以一个密集矩阵(并利用我们有一个对称矩阵的事实)?我知道 BLAS 中的 DSYMM 例程,但我正在处理的矩阵是 mat 类型(它们不是数组),所以我想知道犰狳中是否有一些东西使用来自 BLAS 的 DSYMM 例程。 我在犰狳文档中找不到任何东西。

【问题讨论】:

犰狳内部使用 BLAS 进行矩阵乘法。在构建可执行文件时,如果将其与适当的库链接,它应该利用矩阵之一在进行乘法时是对称的这一事实。 【参考方案1】:

源代码分发中的文件include/armadillo_bits/def_blas.hpp(BLAS 接口)和include/armadillo_bits/glue_times_meat.hpp(实现乘法)根本不引用dsymm(与dgemm 相比),因此即使您的矩阵可能是对称的,乘法不会利用这一点。

但是,如果您需要使用dsymm,您可以使用矩阵的memptr() 方法来获取对原始连续内存的访问权限并自己直接调用dsymm...

【讨论】:

太好了,非常感谢。

以上是关于当 B 是犰狳中的对称矩阵时的 A * B 计算的主要内容,如果未能解决你的问题,请参考以下文章

广播类似于 Numpy 的犰狳矩阵运算的最佳方式

如何在犰狳 C++ 中修改矩阵中的某些列

C ++犰狳重塑只有一维大小的矩阵

在犰狳中使用相同的内存进行LU分解

MCM(矩阵链乘法)

怎么利用矩阵MATLAB计算?