OpenMP: are local variables automatically private?
c, c++, openmp, parallel-processing
Solution
Yes, local variables are automatically private.
The reason for the existence of the `private` clause is so that you don't have to change your code.
The only way to parallelize the following code without the private clause
int i,j;
#pragma omp parallel for private(j)
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
//do something
}
}
is to change the code. For example like this:
int i
#pragma omp parallel for
for(i = 0; i < n; i++) {
int j;
for(j = 0; j < n; j++) {
//do something
}
}
That's perfectly valid C89/C90 code but one of the goals of OpenMP is not have to change your code except to add `pragma` statements which can be enabled or disabled at compile time.
Problem
``` #pragma omp parallel { int x; // private to each thread ? } #pragma omp parallel for for (int i = 0; i < 1000; ++i) { int x; // private to each thread ? } ``` Thank you! P.S. If local variables are automatically private, what is the point of using private clause?