apadana
apadana

Reputation: 722

OpenMP parallel 'for' doesn't work properly

The following snippet is from one of the functions of my code:

static int i;

#pragma omp parallel for default(shared) private(i) schedule(static,1)
for (i=0; i<ttm_ic_last; i++)
{
    static int ni, ni1, ni2;
    static double ni_ratio;
    static double temp_e, temp_l;
    ...
}

It's odd that when I comment the line starting with #pragma it works properly, otherwise the loop doesn't touch at least some of the intended values of i. (I'm not sure if 'touch' is the correct verb here.)

I'm using a workstation with

gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)

I wonder what the cause of this error can be.

Upvotes: 1

Views: 80

Answers (1)

anatolyg
anatolyg

Reputation: 28300

(Answer by Stefan)

Don't use static variables when OpenMP threads are involved.

The thing is; with statics, they have a shared memory space. So they will likely to interfere with each other across the threads. Your parallel loops are all looking inside the same box.

Upvotes: 1

Related Questions