#include <mpi.h>
#include <cstdio>
#define n 10
int main(int argc,char **argv){
int myid,size;
double a[n]={0},b[n]={0};
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&size);
for(int i=0;i<n;i++){
a[i]=myid;
b[i]=0;
}
int next=(myid+1)%size;
int front=(myid-1+size)%size;
// MPI_Request request,request1;
// MPI_Isend(a,n,MPI_DOUBLE,next,0,MPI_COMM_WORLD,&request);
// MPI_Irecv(b,n,MPI_DOUBLE,front,0,MPI_COMM_WORLD,&request1);
MPI_Send(a,n,MPI_DOUBLE,next,0,MPI_COMM_WORLD);
MPI_Recv(b,n,MPI_DOUBLE,front,0,MPI_COMM_WORLD,&status);
printf("b[0]=%f in process %d\n",b[0], myid);
MPI_Finalize();
return 0;
}
阻塞式MPI_Send&MPI_Recv
最新推荐文章于 2023-08-30 21:59:50 发布