为什么这段代码不起作用? [下面是C中的伪代码]

时间:2016-02-07 00:51:27

标签: c openmp

下面是使用OpenMP并行化的C中的伪代码。并行OpenMP代码有什么问题会阻止它产生正确的结果,如串行代码,你将如何纠正?

void ccode (float a[], float b[], float c[], int n) {

float x, y ; int i;

#pragma omp parallel for shared (a,b,c,n,x,y) private i

for (i = 0 ; i < n ; i++){

    x = a[i] - b[i] ; 
    y = b[i] + a[i] ;
    c[i] = x * y ;
} 

1 个答案:

答案 0 :(得分:1)

我认为问题是

x = a[i] - b[i] ;
y = b[i] + a[i] ;

其中xy都应声明为private,因为每个帖子应使用自己的xy对。