Site Tools


mpi-time-measurement

Table of Contents

MPI Time measurement

Time measurement uses MPI_Wtime() for wall-clock time. Reduce with MPI_MAX across all processes to get the true elapsed time (set by the slowest).

MPI_Barrier(MPI_COMM_WORLD);   // align all processes before starting the clock
double t0 = MPI_Wtime();
 
do_work();
 
double elapsed = MPI_Wtime() - t0;
double max_elapsed;
MPI_Reduce(&elapsed, &max_elapsed, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
 
if (rank == 0)
    printf("%.6f s  (timer resolution: %.2e s)\n", max_elapsed, MPI_Wtick());

Reducing with MPI_MAX gives the true wall time of the parallel section, which is set by the slowest process. A mean would undercount if processes finish at different times. For microbenchmarks, wrap the timed region in a loop and divide by the iteration count to stay well above the timer resolution.

mpi-time-measurement.md · Last modified: by 127.0.0.1