#include <mpi.h> #include <stdio.h> #include "timer.h" int main (int argc, char **argv) { double timed = 0; timer watch; int myID, numProcs, i; char buffer[5]; MPI_Status status; MPI_Init (&argc, &argv); MPI_Comm_size (MPI_COMM_WORLD, &numProcs); MPI_Comm_rank (MPI_COMM_WORLD, &myID); for (i=0; i<10000; i++) { if (myID == 0) { watch.start (); MPI_Send ((void*)buffer, 4, MPI_CHAR, myID+1, 42, MPI_COMM_WORLD); MPI_Recv((void*)buffer, 4, MPI_CHAR, myID+1, 42, MPI_COMM_WORLD, &status); watch.stop (); timed += watch.read (); } else { MPI_Recv((void*)buffer, 4, MPI_CHAR, 0, 42, MPI_COMM_WORLD, &status); MPI_Send ((void*)buffer, 4, MPI_CHAR, 0, 42, MPI_COMM_WORLD); } } MPI_Finalize (); if (myID == 0) { printf ("%.3f\n", timed/10000.0f); } return 0; }