微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决有没有办法使用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 举报,一经查实,本站将立刻删除。