
rehgewrthwr
By: a guest on
Apr 24th, 2012 | syntax:
C | size: 0.84 KB | hits: 12 | expires: Never
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&id);
MPI_Comm_size(MPI_COMM_WORLD,&length);
MPI_Status status;
time=-MPI_Wtime();
p=length-1;
size=p;
range=1.0/(double)size;
while(size<100000000000)
{
if(id==0)
{
int yes[p];
for(int i=1;i<length;i++)
MPI_Send(&start,1,MPI_DOUBLE,i,0,MPI_COMM_WORLD);
for(int i=0;i<p;i++)
MPI_Recv(&yes[i],1,MPI_INT,i+1,0,MPI_COMM_WORLD,&status);
for(int i=0;i<p;i++)
{
if(yes[i]==1)
{
start+=i*range;
break;
}
}
//printf("start = %1.12f\n",start);
}
else
{
double bound1;
double bound2;
double begin;
int right;
MPI_Recv(&begin,1,MPI_DOUBLE,0,0,MPI_COMM_WORLD,&status);
bound1=begin+(id-1)*range;
bound2=bound1+range;
right=find(f(bound1),f(bound2));
MPI_Send(&right,1,MPI_INT,0,0,MPI_COMM_WORLD);
}
size*=p;
range=1.0/(double)size;