#include #include #include #define NDATA 10000 int main(int argc, char* argv[]){ int me, nprocs, i = 0, sndto, rcvfrom; MPI_Status status; float a[NDATA]; float b[NDATA]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &me); /* Initialize data */ for(i=0;i nprocs-1 ) sndto = 0; rcvfrom = me-1; if ( rcvfrom < 0 ) rcvfrom = nprocs-1; MPI_Sendrecv(a,NDATA,MPI_REAL,sndto,0,b,NDATA,MPI_REAL,rcvfrom,0,MPI_COMM_WORLD,&status); printf("\tI am task %d and I have received b(0) = %1.2f \n", me, b[0]); MPI_Finalize(); return 0; }