Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 在Eigen中乘以X*X.transpose()的最快方法?_Optimization_Matrix_Eigen - Fatal编程技术网

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

Optimization 在Eigen中乘以X*X.transpose()的最快方法?,optimization,matrix,eigen,Optimization,Matrix,Eigen,我想用自转置的方法得到多重矩阵。矩阵的大小约为X[8100] 现在看起来是“MatrixXf h=X*X.transpose() a) 使用显式事实是否可以使用更快的乘法: 结果矩阵是对称的 X矩阵使用相同的数据,因此,可以使用自定义程序进行乘法。 ? b) 此外,我还可以将X矩阵生成为转置矩阵,并使用X.transpose()*X,我应该选择哪个维度 c) 任何关于加快矩阵乘法的技巧 谢谢 (a)矩阵太小,无法利用结果的对称性,因为如果这样做,将失去矢量化。所以你没什么办法 (b) 对于该示例

我想用自转置的方法得到多重矩阵。矩阵的大小约为X[8100]

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

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

  • 结果矩阵是对称的
  • X矩阵使用相同的数据,因此,可以使用自定义程序进行乘法。 ?
  • b) 此外,我还可以将X矩阵生成为转置矩阵,并使用X.transpose()*X,我应该选择哪个维度

    c) 任何关于加快矩阵乘法的技巧

    谢谢

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

    (b) 对于该示例,默认列存储应该可以


    (c) 确保编译时启用了优化,并且启用了SSE2(这是64位系统上的默认设置),对于这种大小,devel分支的速度至少是其两倍,并且可以通过启用AVX获得额外的加速。

    为什么我应该松开矢量化?乘法可以对下矩阵部分或上矩阵部分执行每行点积(长度100)。在(int k=0;k