#include "mpi.h" #include #include #include int main( int argc, char *argv[]) /* greetings_comm */ { int my_rank, np, sender, recipient, tag, ln, ierr; char name[100], message[100]=", greetings from "; MPI_Status status; ierr = MPI_Init(&argc,&argv); ierr = MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); ierr = MPI_Comm_size(MPI_COMM_WORLD,&np); sender = my_rank - 1; recipient = my_rank + 1; if ( my_rank == 0 ) { printf("What's your name?\n"); scanf("%s",name); ln = strlen(name); } if ( sender >= 0 ) { tag = 0; ierr = MPI_Recv(&ln, 1, MPI_INT, sender, tag, MPI_COMM_WORLD, &status); tag = 1; ierr = MPI_Recv(name, ln, MPI_CHAR, sender, tag, MPI_COMM_WORLD, &status); } if ( recipient < np ) { tag = 0; ierr = MPI_Send(&ln, 1, MPI_INT, recipient, tag, MPI_COMM_WORLD); tag = 1; ierr = MPI_Send(name, ln, MPI_CHAR, recipient, tag, MPI_COMM_WORLD); } name[ln]='\0'; printf("Hi %s %s %d\n",name,message,my_rank); MPI_Finalize(); return 0; }