小编Dar*_*Cos的帖子

Eigen 中的高效矩阵转置矩阵乘法

我可以访问许多矩阵库,但是对于这个项目,我使用 Eigen,因为它的编译时定义和它包含 SVD。

现在,我正在执行以下操作:

Eigen::Matrix<double,M,N> A;     // populated in the code

Eigen::Matrix<double,N,N> B = A.transpose() * A;
Run Code Online (Sandbox Code Playgroud)

据我了解,这会复制 A 并形成转置,然后再乘以 A。此操作是在相对较小的矩阵 (M=20-30,N=3) 上执行的,但每秒执行数百万次,这意味着它必须尽可能快。

我读到使用以下方法更快:

B.noalias() = A.transpose() * A;
Run Code Online (Sandbox Code Playgroud)

我可以编写自己的子例程,接受 A 作为输入并填充 B,但我想知道是否存在使用最少周期的高效现有实现。

c++ performance matrix-multiplication eigen

7
推荐指数
1
解决办法
5859
查看次数

标签 统计

c++ ×1

eigen ×1

matrix-multiplication ×1

performance ×1