在Eigen中乘以X * X.transpose()的最快方法?

时间:2014-07-31 15:19:29

标签: optimization matrix eigen

我想要自我转置的多个矩阵。矩阵的大小约为X [8,100]。

现在看起来" MatrixXf h = X * X.transpose()"

a)是否可以使用明确的事实使用更快的乘法:

  1. 结果矩阵是对称的
  2. X矩阵使用相同的数据,可以使用自定义程序进行乘法。 ?
  3. b)另外我可以生成X矩阵作为转置并使用X.transpose()* X,我应该更喜欢我的尺寸?

    c)有关此类矩阵更快倍增的任何提示。

    感谢。

1 个答案:

答案 0 :(得分:1)

(a)你的矩阵太小而无法利用结果的对称性,因为如果这样做,那么你将失去矢量化。所以你无能为力。

(b)对于该示例,默认列存储应该没问题。

(c)确保在优化ON的情况下进行编译,启用了SSE2(这是64位系统的默认设置),对于这样的大小,devel分支至少快两倍,并且您可以通过启用获得额外的加速AVX。