Is it correct apply firstprivate and lastprivate at the same variable?
For example:
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);
}
Thank you!
答案 0 :(得分:4)
正如OpenMP specification 4.0版第2.14.3节所述:
指定给定变量的列表项可能不会出现在同一指令的多个子句中,除了可以在
firstprivate
和lastprivate
子句中指定变量。
允许这样做实际上很有意义。 firstprivate
会影响列表变量在进入并行区域时的值,而lastprivate
会在退出区域时影响它们。两者都是非冲突的,它们的组合使用允许某些变量传播&#34;通过该区域并以与顺序情况相同的方式获取并行代码修改其值。它主要用于并行循环。