0

I'm using OpenMP but the problem is that I'm declaring/defining a function as follow:

void compute_image(double pixel[nb], double &sum)
{
        #pragma omp parallel for reduction(+:sum)
    for (int j=0;j<640;j++)
    {
    if ...
    sum=sum+pixel[0];
    ....
    }
....
}

What I realise now is that :

Error   2   error C3030: 'sum' : variable in 'reduction' clause/directive cannot have reference type    C:\Users...\test.cpp    930

Actually, I cannot get rid of OpenMP. Any solution?

4

1 に答える 1

1

削減の代わりに、または線 のsum=sum+pixel[0]下に置くことができます。#pragma omp atomic#pragma omp critical

別のオプションとしてdouble local_sum = sum;、omp セクションの前に a を置き、local_sum を減らしてsum = local_sum;から、for ループの後に置くこともできます。

于 2013-05-14T15:46:32.563 に答える