csu_17 2016-12-18 09:38 采纳率: 44.4%
浏览 1229

openMP入门,新手渣渣求解释下面的求圆周率的代码

#include
static long num_steps = 100000;
double step;
#define NUM_THREADS 2
void main () {

int i;

double x, pi, sum[NUM_THREADS];
step = 1.0/(double) num_steps;
omp_set_num_threads(NUM_THREADS)
#pragma omp parallel {

double x;

int id;
id = omp_get_thread_num();
for (i=id, sum[id]=0.0;i< num_steps; i=i+NUM_THREADS) {
x = (i+0.5)*step;
sum[id] += 4.0/(1.0+x*x);
}
}
for(i=0, pi=0.0;i<NUM_THREADS;i++) pi += sum[i] * step;
}

首先,static long num_steps的作用
其次, step = 1.0/(double) num_steps; ?
然后, x = (i+0.5)*step;
最后,谢谢解答

  • 写回答

1条回答 默认 最新

  • devmiao 2016-12-18 16:11
    关注
    评论

报告相同问题?