openmp-private
最近刚开始学openmp,在训练的时候发现明明前面定义好的数组在经过private语句后会报错:Run-Time Check Failure #3 - The variable 'sou' is being used without being initialized.
简单举例如下:
......
int a =5;
#ifdef _OPENMP
#pragma omp parallel for \
schedule(dynamic) \
private(a) //将变量a私有化
#endif
for (i=0;i<5;i++)
{
printf("a=%d\n",a)
}
......
这样就会报错说变量a 没有初始化。
原因: for循环前面的变量a 和循环区域内的变量a 是两个不同的变量。用private字句生命的私有变量的初始值在并行域的入口处是未定义的,它并不会继承同名共享变量的值。

浙公网安备 33010602011771号