小编j_n*_*att的帖子

矩阵乘法优化

我正在执行一系列具有相当大矩阵的矩阵乘法。要完成所有这些操作需要很长时间,因此我需要我的程序在较大的循环中执行此操作。我想知道是否有人有什么想法可以加快速度?我刚开始使用Eigen,所以我的知识非常有限。

我使用的是ROOT-cern内置的TMatrix类,但是执行矩阵运算的速度非常差。我使用Eigen设置了一些对角矩阵,希望它能以更好的方式处理乘法运算。可以,但是我看不到性能差异。

// setup matrices
int size = 8000;

Eigen::MatrixXf a(size*2,size);

// fill matrix a....

Eigen::MatrixXf r(2*size,2*size); // diagonal matrix of row sums of a

// fill matrix r

Eigen::MatrixXf c(size,size); // diagonal matrix of col sums of a

// fill matrix c

// transpose a in place
a.transposeInPlace();

Eigen::MatrixXf c_dia;
c_dia = c.diagonal().asDiagonal();

Eigen::MatrixXf r_dia;
r_dia = r.diagonal().asDiagonal();

// calc car
Eigen::MatrixXf car;
car = c_dia*a*r_dia;
Run Code Online (Sandbox Code Playgroud)

c++ eigen

4
推荐指数
1
解决办法
95
查看次数

标签 统计

c++ ×1

eigen ×1