#include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "string.h" int main( int argc, char *argv[]) { int nprocs, myrank, dest, source, merror, tag=1, itag=2; int i, m; char inmsg[128], outmsg[128]="Hello from root to "; char newmsg[128]; static char strd[128]; MPI_Status Status; size_t msglen; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if(myrank == 0) { for(i = 1; i < nprocs; i++) { dest = i; m = sprintf(strd, "%d", dest); strcpy(newmsg, outmsg); strcat(newmsg,strd); msglen = strlen(newmsg); merror = MPI_Send(&msglen, 1, MPI_INT, dest, itag, MPI_COMM_WORLD); } } else { source = 0; merror = MPI_Recv(&msglen, 1, MPI_INT, source, itag, MPI_COMM_WORLD,&Status); merror = MPI_Recv(&inmsg, msglen, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Status); printf("Processor %d received \"%s\" from Processor 0\n", myrank, inmsg); } MPI_Finalize(); }