【发布时间】:2019-03-29 11:50:10
【问题描述】:
我想将矩阵 A 的列与向量 v 相乘,最后得到每一列的总和。我使用 Eigen 库,编码如下:
for (int j = 0 ; j< A.cols(); j++)
C.col(j).noalias() = V.cwiseProduct(A.col(j));
V2 = C.colwise().sum();
但是,它仍然很慢。 我也使用了以下产品,但这些产品更慢。
1. C = A * V.asDiagonal();
2. C = A.array().rowwise() * V.transpose().array();
有什么想法吗?
【问题讨论】:
-
什么编译器?什么编译器标志(例如必须打开优化)?多少时间是“慢”的,在什么硬件上? minimal reproducible example好吗?
-
感谢@AviGinsburg 的回复。编译器是 g++。现在时间约为 0.03 秒,矩阵 A 的大小为 (38,000 , 160)。