小编Mar*_*Liu的帖子

本征在乘以小矩阵时是否慢?

我编写了一个函数,将10x10维的本征矩阵相乘。然后,我编写了一个朴素的乘法函数CustomMultiply,它比Eigen的实现快2倍。

我尝试了几个不同的编译标志,例如-O2和-O3,它们没有什么不同。

  #include <Eigen/Core>

  constexpr int dimension = 10;
  using Matrix = Eigen::Matrix<double, dimension, dimension>;

  Matrix CustomMultiply(const Matrix& a, const Matrix& b) {
    Matrix result = Matrix::Zero();
    for (int bcol_idx = 0; bcol_idx < dimension; ++bcol_idx) {
      for (int brow_idx = 0; brow_idx < dimension; ++brow_idx) {
        result.col(bcol_idx).noalias() += a.col(brow_idx) * b(brow_idx, bcol_idx);
      }
    }
    return result;
  }

  Matrix PairwiseMultiplyEachMatrixNoAlias(int num_repetitions, const std::vector<Matrix>& input) {
    Matrix acc = Matrix::Zero();
    for (int i = 0; i < num_repetitions; ++i) …
Run Code Online (Sandbox Code Playgroud)

c++ eigen3

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

标签 统计

c++ ×1

eigen3 ×1