omp求和特征矩阵

时间:2013-12-12 01:12:23

标签: eigen openmp

对于每次运行,我想将grad与sum_grad相加。为了防止比赛条件,我用原子。但是编译器说:

error: invalid expression type for ‘#pragma omp atomic’

#pragma omp atomic
overall_grad.h +=  grad.h;
overall_grad.w +=  grad.w;

数据类型

struct Grad {
     Eigen::MatrixXd h;
     Eigen::MatrixXd w;
};

omp是否仅支持+ =原始类型?如何将特征矩阵求和?谢谢!

注意,我没有使用Eigen库提供的并行功能,只是对所有样本运行并行,并更新overall_grad。

1 个答案:

答案 0 :(得分:1)

是原子操作仅适用于少数原生类型。在您的情况下,您需要使用关键部分:

#pragma omp critical 
{
    ...
}