/* Tyler Simon * 12/7/2010 * Runtime object for FORTRAN or C, gives mpi startup and finalize times * to compile: cc -c mpi_timer.c * then link into your favorite mpi program */ #include "mpi.h" #include #include int ierr; int mpi_init_thread_(int argc,int ierr) { char** argv; MPI_Init(argc, argv); return 0; } int mpi_init_(ierr) { int argc; char** argv; MPI_Init(argc, argv); return 0; } int mpi_finalize_(ierr) { MPI_Finalize(); return 0; } int MPI_Init(int *argc, char ***argv) { double time1; int myid; struct timeval t1, t2; gettimeofday(&t1, NULL); PMPI_Init (argc, argv); gettimeofday(&t2, NULL); time1 = (t2.tv_sec - t1.tv_sec) + (t2.tv_usec - t1.tv_usec) * 0.000001; MPI_Comm_rank(MPI_COMM_WORLD, &myid); fprintf(stdout, "Rank: [%d]\tMPI_Init time: %f\n", myid, time1); return(0); } int MPI_Finalize(void){ double time2; struct timeval t1, t2; int myid; int sve; MPI_Comm_rank(MPI_COMM_WORLD, &myid); sve=myid; gettimeofday(&t1, NULL); PMPI_Finalize(); gettimeofday(&t2, NULL); time2 = (t2.tv_sec - t1.tv_sec) + (t2.tv_usec - t1.tv_usec) * 0.000001; fprintf(stdout, "Rank: [%d]\tMPI_Finalize time: %f\n", sve, time2); return (0); }