开发者

OpenMP: are local variables automatically private?

开发者 https://www.devze.com 2023-03-13 08:14 出处:网络
#pragma omp parallel { int x; // private to each thread ? } #pragma omp parallel for for (int i = 0; i < 1000; ++i开发者_开发问答)
#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?


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.


The data within a parallel region is private to each thread.

Kindly refer http://en.wikipedia.org/wiki/OpenMP#Data_sharing_attribute_clauses [Data sharing attribute clauses]

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号