我有一个STL Vector包含一些像这样的矩阵
std :: vector foovec;
此向量中有大约3000个条目,我想要将它们相加并形成一个新的Eigen :: Matrix .
这样做的天真C代码是:
for(int i = 0; i <foovec.size();i++) {
result += foovec[i];
}
但是,我想使用OPENMP并行化此操作 . 我知道我不能使用reduction pragma,因为这是一个非标量类型 . 如果有人能告诉我一个很好的方法来并行化这种减少而没有任何写入冲突,那就太好了 .
2 回答
你可以这样做
对于OpenMP> = 4.0,您也可以这样做
对我来说,使用
reduction(merge : ...)
不起作用 . 它有未初始化矩阵的问题(我认为) .以下做了: