OpenMP并行for循环和std :: vector缩减

时间:2018-05-07 17:49:46

标签: c++ parallel-processing openmp

我有以下简化的代码片段,每次执行时会产生稍微不同的结果。结果也与串行版本不同。谁能告诉我它有什么问题?

#pragma omp declare reduction(vec_float_plus : std::vector<float> : \
                              std::transform(omp_out.begin(), omp_out.end(), omp_in.begin(), omp_out.begin(), std::plus<float>())) \
                    initializer(omp_priv = omp_orig)

vector<float> vec0;
vec0.resize(M);
std::fill (vec0.begin(),vec0.end(),0);

#pragma omp parallel for reduction(vec_float_plus : vec0) 

for (int i0=0;i0<M;i0++)
{
    for (int j0=0;j0<M;j0++)
    {
        vec0[j0]+=A[i0]*B[i0]*C[i0]; // A, B, C are vectors of size M
    } 
}

0 个答案:

没有答案
相关问题