[ET Trac] [Einstein Toolkit] #791: Output timer tree as XML

Einstein Toolkit trac-noreply at einsteintoolkit.org
Thu May 3 03:43:44 CDT 2012


#791: Output timer tree as XML
--------------------------+-------------------------------------------------
  Reporter:  hinder       |       Owner:  eschnett   
      Type:  enhancement  |      Status:  reviewed_ok
  Priority:  minor        |   Milestone:             
 Component:  Carpet       |     Version:             
Resolution:               |    Keywords:             
--------------------------+-------------------------------------------------

Comment (by hinder):

 Yes, I thought about the fact that output could be lost, and the
 implications for appending and renaming.  I agree with what you say, and
 indeed this can be added later.

 Regarding the schema, I have found practically that it is useful to have
 lists of elements enclosed by a single common element.  That means I can
 ask for all the members of <children>.  On the other hand, I probably
 should only look at elements that I know, to make the format extensible,
 so in the end maybe the <children> tag is not necessary.  I will have to
 restrict to elements of the correct tag anyway.  I will likely change the
 schema in the near future because at the moment it's a little annoying to
 process.

 Yes, the output accuracy should be fixed.

 Regarding the output filename, I used to agree, but now I don't :)
 Sorting with ls is only one use case.  A more useful thing to do is to
 programatically load the timers via a loop, or from a specific process, in
 which case you are given an integer and want to find the filename.  At the
 moment, for the carpetlib timers, I have to load all the filenames, parse
 all the 0004 etc into integers, and then select the filename which
 corresponds to the integer I want.  Having the actual process number in
 the filename would make this much more straightforward.  The fact that ls
 doesn't have the ability to sort filenames with numerical components into
 numerical order shouldn't force us to adopt an inelegant solution.
 Another problem is that the number of leading zeroes is hard-coded.
 Anyway, we eventually shouldn't have per-process output files anyway; the
 data should all be sent to the root process and added to a single XML
 file.

 The original patch was committed as
 http://www.carpetcode.org/hg/carpet/index.cgi/rev/27ddee06ff1d.

 I have another patch relating to this:
 http://www.carpetcode.org/hg/carpet/index.cgi/rev/e0e84d10eac8

 This second patch allows you to include the historical values of the
 timers (i.e. every time they are stopped) in the XML file.  This allows
 you to determine if the run times for each routine are consistent, or if
 they "jitter".  This was very helpful for optimising performance.  There
 is no information about the coordinate time or iteration number, as this
 is not available to the TimerNode class.  I'm not sure if it's possible to
 get that.  A Carpet function get_current_iteration() would be helpful.  Is
 there a global notion of current iteration?  We would still have multiple
 entries for each iteration (e.g. for MoL substeps).  Each time is stored
 in a vector<double> every time the timer is stopped.  Could this be a
 problem?  Might it grow large?  Maybe this could be stored conditionally
 on the parameter being set?

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/791#comment:4>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list