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字句生命的私有变量的初始值在并行域的入口处是未定义的,它并不会继承同名共享变量的值。

 

posted @ 2017-07-29 15:45  不合格的合格程序员  阅读(979)  评论(1)    收藏  举报