有没有办法使用Eigen获得更快的点阵产品?

问题描述

因此,我正在使用Eigen对自己的数据结构执行矩阵数学运算,该数据结构封装了std :: arrays。我基本上是这样获得点积的:

Eigen::Map<const Eigen::Matrix<D,N,1>> m1(my_array1.data());
Eigen::Map<const Eigen::Matrix<D,1>> m2(my_array2.data());
return m1.dot(m2);

这是从模板化类中提取的,因此是矩阵维度的替代者,但否则非常简单。我注意到创建地图需要一些开销,然后当然还有实际点积的成本。

总的来说,我对Eigen的性能非常满意,它的速度肯定比我以前对点产品的幼稚实现要快得多。但是,由于我的程序大量使用了点积,因此我想知道是否有任何向导可以提供一些技巧来进一步加快速度。点产品约占我程序总运行时间的10%,因此对于我的降压优化而言,这将是很大的收获。我唯一的限制是我的向量仍然生活在连续的堆栈变量中(我没有特别嫁给std :: array,但我喜欢它们当前如何完成工作)。

那么,有什么建议吗?还是这是我能得到的最好的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)