OpenMP параллель для членов над структурой? - PullRequest
1 голос
/ 13 февраля 2012

Можно ли распараллелить цикл над членами Stuct с OpenMP?Я попробовал следующее с GCC

point_t p;
double sum;
#pragma omp parallel for private(p) reduction(+: sum)
for (p.x = 0; p.x < N; p.x++) {
    for (p.y = 0; p.y < N; p.y++) {
            sum += foo(p);
    }
}

Но это дает мне ошибку компиляции

    error: expected iteration declaration or initialization before ‘p

Это ошибка GCC или она не является частью спецификаций OpenMP?

1 Ответ

0 голосов
/ 13 февраля 2012

Я не думаю, что это разрешено в OpenMP;parallel for необходимо перебрать переменную , а не общее значение.Do

int x, y;  // or whatever you store in a point_t
double sum;

#pragma omp parallel for reduction(+:sum)
for (x=0; x<N; x++)
    for (y=0; y<N; y++) {
        point_t p(x, y);  // assuming C++
        sum += foo(p);
    }
...