Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Interpretation of timer information in log file

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.


I'd like to understand the timer information that is printed at the bottom of the log.atmosphere.0000.out file. Some specific questions are:
  • Why does the initialization time seem so small (initialize + time integration < total time)?
  • What is the interpretation of parallel efficiency?
Sample output is attached. Thanks.
View attachment timer.txt
The total runtime for a simulation includes time not spent in initialization or counted as time integration; for example, time spent writing output files isn't counted as "time integration".

The "parallel efficiency" is defined as the average time for a region across all MPI tasks divided by the maximum time for that region across all tasks.

Hopefully this helps, and if you have any additional questions about timers, please feel free to follow up in this thread.
I suspect there are code regions that are not covered by the I/O, initialization, or time integration timer regions. If you'd like to get an accurate estimate of output time, the best approach would probably be to just grep for "Timing for stream output" in the log file and sum the times; e.g.,
> grep "Timing for stream output" log.atmosphere.0000.out
Timing for stream output: 4.10255 s
Timing for stream output: 0.865940 s
Timing for stream output: 2.88848 s
Timing for stream output: 0.983989 s
Timing for stream output: 3.21821 s
Timing for stream output: 0.848756 s
Timing for stream output: 2.87660 s
Timing for stream output: 0.903173 s
Timing for stream output: 8.93554 s
Stream output is blocking, so there's no overlap of computation and model output.

Although I don't think we have timers for input, it should be easy to add calls like
      use mpas_timer, only : mpas_timer_start, mpas_timer_stop
      call mpas_timer_start('stream_input')
      call mpas_timer_stop('stream_input')
around the code to read ICs. The time for the "stream_input" timer region should show up at the end of the log.atmosphere.0000.out file with the other cumulative timers.