OpenMP减少条款

时间:2018-03-03 09:58:51

标签: visual-studio c++11 openmp

我有一个循环,我试图与OpenMP并行化。我在代码中的构造是这个,

for(int x = 0; x < <condition>; x++) 
{
    aggregate += <return value from very costly function(param1)>;
}

我正在尝试将其并行化,如下所示,

#pragma omp parallel for
for(int x = 0; x < <condition>; x++) 
{
    #pragma omp parallel private(param1)
    aggregate += <return value from very costly function(param1)>;
}

如果因为所有线程使用相同的内存而不使param1成为私有,它会崩溃。但是我总是得到聚合的值为0.我明白这是因为我没有减少它来计算每个线程的本地计算的聚合值。我对此感到困惑,我该怎么做才能总结线程中的所有值?

这是在Visual Studio 13 C ++中。

0 个答案:

没有答案