求助,請進來看一個簡單的MPI程式
阿新 • • 發佈:2019-02-20
是《MPI與OpenMP並行程式設計-C語言版》的作業;91頁裡面習題4.11:
通過計算在曲線下圖形的面積來計算pi,一個簡單的方法是使用矩形規則,將區間【0,1】分成k個等長子區間。用這些高度可以構造k個矩形。這些矩形的面積逼近曲線下圖形的面積。
如下是課文中的C程式
#define intervals 1000000int main(int argc, char*argv[])
{
double area;
double ysum;
double xi;
int i;
ysum=0.0;
for(i=0;i<intervals;i++)
{
xi
ysum+=4.0/(1.0+xi*xi);
}
area=ysum*(1.0/intervals);
printf("Area is %f ",area);
return0;
}
現要求編寫一個使用矩形規則在100000個區間的並行程式計算pi;
我的程式如下,
#include <mpi.h>#include <stdio.h>
#include <math.h>#define intervals 1000000double area,aa;
int main(int argc, char*argv[])
{ int
void pi(int,int);
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,&id);
MPI_Comm_size(MPI_COMM_WORLD,&p);
for (i=id;i<intervals;i+=p)
{pi(id,i);
aa
printf("Area is %f ",aa);
MPI_Finalize();
return0;
}
void pi(int id,int z){
double ysum;
double xi;
ysum=0.0;
xi=(1.0/intervals)*(z+0.5);
ysum=4.0/(1.0+xi*xi);
area=ysum*(1.0/intervals);
}
編譯之後執行不了,菜鳥的sb程式不知道是哪裡出錯了呢、