#include <stdio.h>
#include <math.h>
#include <mpi.h>
int main(int argc,char **argv){
int myid,size;
MPI_Comm MyWorld;
MPI_Init(&argc,&argv);
MPI_Comm_dup(MPI_COMM_WORLD,&MyWorld);
MPI_Comm_rank(MyWorld,&myid);
MPI_Comm_size(MyWorld,&size);
int x; float y;
int send_x = 100;
float send_y = 3.14;
MPI_Status status;
if(myid ==0) /*0->2发送一int型数*/
MPI_Send(&send_x,1,MPI_INT,2,99,MyWorld);
else if(myid == 1) /*1->2发送一float型数*/
MPI_Send(&send_y,1,MPI_FLOAT,2,99,MyWorld);
else /* 根进程接收 */
for(int i=0;i<2;i++){
MPI_Probe(MPI_ANY_SOURCE,99,MyWorld,&status);/*Blocking*/
if(status.MPI_SOURCE == 0)
MPI_Recv(&x,1,MPI_INT,0,99,MyWorld,&status);
else if(status.MPI_SOURCE == 1)
MPI_Recv(&y,1,MPI_FLOAT,1,99,MyWorld,&status);
}
if(myid==2)
printf("myid=%d;x=%d;y=%f\n",myid,x,y);
MPI_Finalize();
return 0;
}
MPI_Probe
最新推荐文章于 2024-07-12 10:45:15 发布