int main(intargc,char **argv)
{
intsize,rank;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
float s,s0=1,s1=0,n=10,i,p;
int k;
if(rank==0)
{ for (i=0; i<n/2; i++)
{p=1;
for (k=1; k<=i+1; k++)
{p=p*(k); }
s0=s0+(1.0)/p;
}
MPI_Send(&s0,1,MPI_FLOAT,1,5,MPI_COMM_WORLD);
}
if(rank==1)
{
for (i=n/2; i<n; i++)
{ p=1;
for (k=1; k<=i+1; k++)
{p=p*k;}
s1=s1+(1.0)/p;
}
MPI_Recv(&s0,1,MPI_FLOAT,0,5,MPI_COMM_WORLD,&status);
s=s1+s0;
printf("s=%f ",s);
}
}
. SISD, SIMD.
. . :
SISD (Single Instruction Stream Single Data Stream) ;
SIMD (Single Instruction Stream Multiple Data Stream) ;
MISD (Multiple Instruction Stream Single Data Stream) ;
MIMD (MultipleInstructionStream MultipleDataStream) .
SISD , "" , ( - ). , , . , , .
SIMD ( ), , , . , . , , . . , . , . SIMD , "" . SIMD.
MPI PVM.
PVM (ParallelVirtualMachine) . UNIX , . MPI (MessageParsingInterface). MPI . , . MPI. MPI . , , , .
|
|
MPI PVM : 1. MPI PVM , 2. MPI PVM MPMD ; 3. MPI PVM ; 4. MPI PVM .
MPI PVM : 1. PVM , MPI; 2. PVM ( MPI-2 ); 3. PVM , ( MPI-2 ).