おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

はじめてのOpenMP(3)

private指示文

ソースと実行結果を見れば、private指示文の挙動がわかると思います。OpenMPでfor文を並列化するとき、for文で使用されるインデックスは自動的にprivate変数になっています。

#include <omp.h>
#include <stdio.h>

int main(void){
    int i=0,j=10,k=20;

#pragma omp parallel
    {
        i+=j+k;
    }
    printf("i=%d,j=%d,k=%d\n",i,j,k);
    return 0;
}

実行結果

i=240,j=10,k=20
private指示文を使用した場合。
#include <omp.h>
#include <stdio.h>

int main(void){
    int i=0,j=10,k=20;

#pragma omp parallel private(i)
    {
        i+=j+k;
    }
    printf("i=%d,j=%d,k=%d\n",i,j,k);
    return 0;
}

実行結果

i=0,j=10,k=20