#include #include /* * Sends 'n' messages in a ring of processes. * * usage: ring-mpi */ main(int argc, char **argv) { int n, i, data[1]; int size, rank, dest; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD,&size); MPI_Comm_rank(MPI_COMM_WORLD,&rank); n = atoi(argv[1]); dest = (rank+1)%size; /* Send 'n' startup messages. */ if (rank%(size/n) == 0) { MPI_Send(data, 1, MPI_INT, dest, 0, MPI_COMM_WORLD); } while (1) { MPI_Recv(data, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Send(data, 1, MPI_INT, dest, 0, MPI_COMM_WORLD); } MPI_Finalize(); }