[ET Trac] [Einstein Toolkit] #445: Make Carpet timers hierarchical

Einstein Toolkit trac-noreply at einsteintoolkit.org
Wed Jun 1 12:40:42 CDT 2011


#445: Make Carpet timers hierarchical
-------------------------+--------------------------------------------------
 Reporter:  hinder       |       Owner:  eschnett
     Type:  enhancement  |      Status:  new     
 Priority:  major        |   Milestone:          
Component:  Carpet       |     Version:          
 Keywords:               |  
-------------------------+--------------------------------------------------
 With the current flat structure of timers in Carpet, it is difficult to
 identify which timers are contained in which other timers, and hence to
 avoid double-counting when adding up the times.

 This series of patches modifies the timer infrastructure in Carpet to
 generate a tree of timers where the hierarchy reflects the call-graph of
 the program.  This makes it much easier to interpret the timer output than
 with the previous flat structure, where it was not possible to see which
 timers "contained" which others.  More implementation details are given at
 the top of TimerNode.hh.

 Note that the Timer source and header files have been renamed as
 CactusTimer and a new Timer file and object has been created.  This is
 because the Timer object now only provides a wrapper around the Cactus
 timer mechanism which was contained in the old Timer object.

 New parameters output_initialise_timer_tree and output_timer_tree_every
 control output of a new "timer tree diagram" to standard output for the
 Initialise and Evolve timer trees respectively.  These diagrams indicate:

 1. the value of each timer;
 2. the percentage of the given tree taken by each timer;
 3. which timers are contained in which other timers;
 4. any untimed code

 for any timer which takes more than 1% of the tree time.

 Making the timers hierarchical means that the ad-hoc methods used before
 to identify the hierarchy (such as naming the timer Evolve::Sync, for
 example, to indicate that the Sync timer was a child of the Evolve timer)
 are no longer necessary and have been removed.  Additionally, the
 construction of timers in a "dynamic" manner is now handled automatically
 for all timers, so special-case code is no longer needed and has been
 removed.

 Additionally some previously-untimed parts of the code are now timed, and
 timer names have been made more consistent in some places.

 There is code in the patches to output the entire timer tree as an XML
 file, but it is not enabled.

 Ideally the timer tree printed to standard output would contain reductions
 across processes, but at the moment it contains only the timer from the
 current process.

 The attached "tree-example.txt" file shows an example of the timer tree
 that is printed for a simulation using the qc0-mclachlan parameter file
 from the Einstein Toolkit.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/445>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list