OpenMP嵌套奇怪的行为

时间:2018-03-04 18:57:55

标签: c parallel-processing openmp

我正在研究使用openMP进行嵌套parallalization的行为,我发现这个问题我很难解释。

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

int main (){
    int N = 3;
    int i,j; 
    #pragma omp parallel num_threads(3)
    {
    omp_set_nested(1); 
    #pragma omp for private(j) 
    for(i = 0; i<N; i++){
        for(j = 0; j<N; j++){
            printf("AAAAA ");
        }
        printf("\n");
    }
    }
    return 0; 
}

上述程序的正确打印输出

AAAAA AAAAA AAAAA
AAAAA AAAAA AAAAA 
AAAAA AAAAA AAAAA

但偶尔会打印出来

AAAAA AAAAA AAAAA
AAAAA AAAAA AAAAA AAAAA
AAAAA AAAAA

或其他一些配置。我当时认为这与我是如何做的有关。在线程之间共享,但是在使用嵌套循环时,我还没有能够找到omp如何显式处理它。为什么会这样?

0 个答案:

没有答案