Skip to Content

Timing Application Execution


Tools like CrayPAT, TAU and PerfSuite can be used to time application execution.


Timing calls

The following timing function calls are available on Blue Waters for lighter-weight timing:

MPI_Wtime():     portable. It provides microsecond resolution on BW as shown by MPI_Wtick().  

Note the clocks are not required to be highly synchronized across ranks.  MPI_WTIME_IS_GLOBAL 's attribute value is 0 as reported by MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &my_attr_value, &flag ); .

omp_get_time():  can be used in openMP program. It can be used to measures elapsed time in each omp thread.

clock_gettime() provides about nanosecond resolution. It is reliable, and is recommended if a user needs high resolution timers.

gettimeofday() is slow, and it does not provide high resolution measurements

RDTSC uses inline assembly and it is very fast. However, it is not recommended on BW. It suffers from clock variations and also reports different values based on which core its running on. Its not reliable for general purpose use.