【发布时间】:2021-05-14 10:22:36
【问题描述】:
当我在两台不同的机器上运行下面的代码时,我得到不同的输出,其中一台输出正确(sum = sum2),另一台则不正确。
我不知道为什么
#include <stdio.h>
#include <math.h>
#include <omp.h>
int main(){
const int NX=1000;
const int NY=1000;
float x[NX+2];
float y[NX+2];
float u[NX+2][NY+2];
float x2; //
float y2;
float sum;
float sum2;
for (int i=0; i<NX+2; i++){
for (int j=0; j<NY+2; j++){
x2 = i;
y2 = j;
u[i][j] = x2+ y2;
sum += u[i][j];
}
}
for (int i=0; i<NX+2; i++){
#pragma omp parallel for
for (int j=0; j<NY+2; j++){
x2 = i;
y2 = j;
u[i][j] = x2+ y2;
}
}
for (int i=0; i<NX+2;i++){
for (int j=0; j<NY+2; j++){
sum2 += u[i][j];
}
}
printf("%f \n", sum);
printf("%f", sum2);
}
【问题讨论】:
标签: c multithreading performance parallel-processing openmp