Measuring performance

From Carpet Workshop

Measuring Performance

Speed of a run:

 Carpet::physical_time_per_hour

This can be output in the INFO line:

 IOBasic::outInfo_vars                   = "Carpet::physical_time_per_hour"

and to disk:

 IOASCII::out0D_every                    = 256
 IOASCII::out0D_vars                     = "Carpet::timing"

Quick timer info:

 TimerReport::out_every                  = 256
 TimerReport::n_top_timers               = 40

Gives:

INFO (TimerReport): Top timers at iteration 0 time 0
======================================================================
%      Time/s   Timer (gettimeofday)
======================================================================
100.0  237.022  CCTK total time
99.99  237.004  Initialise
69.13  163.875  CallFunction
65.93  156.277  CallFunction::thorns
47.41  112.373  Initialise::CallInitial
44.48  105.431  Initialise::CallAnalysis
42.42  100.546  Initialise::CallInitial::CCTK_INITIAL
42.12  99.8385  [0103] TwoPunctures: TwoPunctures in CCTK_INITIAL
42.12  99.8373  CallFunction/ADMBase_InitialData::TwoPunctures
28.31  67.1221  Initialise::CallAnalysis::OutputGH
16.15  38.2976  Initialise::CallAnalysis::CCTK_ANALYSIS
14.44  34.2264  CarpetIOHDF5<1>::OutputGH
12.29  29.1522  CarpetIOHDF5<2>::OutputGH
11.10  26.3225  [0162] IsolatedHorizon: ih_calculate in CCTK_ANALYSIS
11.10  26.3223  CallFunction/CCTK_ANALYSIS::ih_calculate
6.265  14.8503  Initialise::CallPostInitial
6.260  14.8391  Initialise::CallPostInitial::CCTK_POSTSTEP
4.864  11.5293  [0141] AHFinderDirect: AHFinderDirect_find_horizons in CCTK_POSTSTEP
4.864  11.5291  CallFunction/CCTK_POSTSTEP::AHFinderDirect_find_horizons
3.170  7.51414  CallFunction::syncs
2.833  6.71703  Evolve::Sync
2.539  6.01963  [0172] WorldTube: WorldTube_Decompose in CCTK_ANALYSIS
2.539  6.01953  CallFunction/CCTK_ANALYSIS::WorldTube_Decompose
2.284  5.41545  Initialise::CallInitial::CCTK_POSTINITIAL
1.800  4.26694  [0158] Multipole: Multipole_Calc in CCTK_ANALYSIS
1.799  4.26633  CallFunction/CCTK_ANALYSIS::Multipole_Calc
1.772  4.20062  [0122] CTGEvolution: CTGEvolution_SelectBoundaries in CCTK_POSTINITIAL
1.719  4.07661  Initialise::CallInitial::CCTK_BASEGRID
1.536  3.64177  CallFunction/BoundaryConditions::Interpolate2ApplyBC
1.498  3.55279  CarpetIOHDF5::OutputGH
1.149  2.72476  [0083] Interpolate2: Interpolate2TestSelectBCs in CCTK_BASEGRID
0.978  2.32036  [0138] Interpolate2: Interpolate2ApplyBC in CCTK_POSTSTEP
0.654  1.55208  Initialise::CallRegridInitialMeta
0.549  1.30270  Initialise::CallSetup
0.542  1.28686  Initialise::CallSetup::CCTK_WRAGH
0.362  0.85995  [0031] Formaline: Formaline_AnnounceInitial in CCTK_WRAGH
0.362  0.85988  CallFunction/CCTK_WRAGH::Formaline_AnnounceInitial
0.344  0.81572  Evolve::Prolongate
0.293  0.69474  [0127] Interpolate2: Interpolate2ApplyBC in CCTK_POSTINITIAL
0.264  0.62719  [0086] Interpolate2: Interpolate2ApplyBC in CCTK_BASEGRID

Detailed timer output:

 TimerReport::output_all_timers_together = yes

Gives an output file containing min, max and average of all the timers. Needs to be parsed programmatically.

Currently working on making all this easier to use!