将firstprivate和lastprivate应用于同一变量是否正确?

例如:

void main (){
    int a= 100, i;
    #pragma omp for firstprivate(a) lastprivate(a)
    for(i = 0; i <9; i++){
        bla bla bla;
    }
    printf("a= %d",a);
}

谢谢!

最佳答案

OpenMP specification版本4.0第2.14.3节所述:



允许这样做实际上很有意义。 firstprivate在进入并行区域时影响列表变量的值,而lastprivate在从该区域退出时影响它们的值。两者都不冲突,并且它们的组合使用允许某些变量“传播”整个区域,并以与顺序情况相同的方式由并行代码修改其值。并行循环最有意义。

10-06 02:45