我有一个关于Eigen中的数组运算的问题(基本上是矩阵元素运算)。
这些操作(+, - ,*,/)是否在Eigen中并行化(使用OpenMP时)?文档没有指定它(c.f。here),但是这些操作应该是并行化的,因为我猜它会非常简单。
示例:
MatrixXd A = MatrixXd::Zero(100,100);
MatrixXd B = MatrixXd::Ones(100,100);
MatrixXd C = A.array() + B.array(); // element-wise addition
MatrixXd D = A.array() / B.array(); // element-wise division
如果它被并行化会很棒。我的代码中有很多这些元素操作,用OpenMP重新定义所有这些操作会更重。
提前致谢
答案 0 :(得分:0)
Eigen web site列出了少数利用多线程的案例。
目前,以下算法可以使用多线程:
一般致密基质 - 基质产品
PartialPivLU
行 - 主 - 稀疏*密集矢量/矩阵乘积
具有Lower | Upper的ConjugateGradient作为UpLo模板参数 具有行主稀疏矩阵格式的BiCGSTAB LeastSquaresConjugateGradient
这不排除SIMD操作,因此仍将使用这些操作。