Merger Tree Processing Times

Class providing estimates of the computational processing time required for merger trees—predictions of how long (in wall-clock time) it will take to evolve a merger tree of a given root halo mass, and of the remaining time for a partially-processed tree. These estimates are used by the work-sharing scheduler to balance computational load across MPI processes: trees expected to take longer can be started earlier or assigned to dedicated workers. The null implementation returns a negative value indicating that no estimate is available.

Default implementation: metaTreeProcessingTimeNull

Methods

timedouble precision

Return an estimate of the time needed to process a tree of the given mass.

  • double precision massTree [in]

timeByCountNodesdouble precision

Return an estimate of the time needed to process a tree with the given number of nodes, or a negative value if no such estimate is available. This is useful for the read path, where the node count of a tree is known before it is evolved but its root mass is not.

  • integer(c_size_t) countNodes [in]

timeRemainingdouble precision

Return an estimate of the remaining time needed to process a given tree.

  • type(mergerTree) tree [inout]

  • double precision timeFinal [in]

metaTreeProcessingTimeFile

A merger tree processing time class which estimates processing times using a polynomial relation read from file. Specifically, the time taken to process a tree is estimate to be

\[\log_{10} [ \tau_\mathrm{tree}(M)] = \sum_{i=0}^2 C_i (\log_{10} M)^i,\]

where \(M\) is the root mass of the tree and the coefficients \(C_i\) are read from a file, the name of which is specified via the [fileName] parameter. This file should be an XML document with the structure:

<timing>
 <fit>
   <coefficient>-0.73</coefficient>
   <coefficient>-0.20</coefficient>
   <coefficient>0.03</coefficient>
 </fit>
</timing>

where the array of coefficients give the values \(C_0\), \(C_1\) and \(C_2\).

Alternatively, if the [fileName] has an .hdf5 or .h5 extension it is assumed to be a Galacticus output file from a previous run of the same (or a similar) model in which the mergerTreeOperatorTreeProcessingTimer operator was active. In that case the fit coefficients are read directly from the metaData/treeTiming/fitCoefficientMass dataset, so that <metaTreeProcessingTime value="file"><fileName value="previousRun.hdf5"/></metaTreeProcessingTime> “just works” without any manual fitting step.

Parameters

  • [fileName] (string) — The name of the file which contains fit coefficients for the time per tree fitting function.

metaTreeProcessingTimeNull

A merger tree processing time class provides no estimates.

(Default implementation)

metaTreeProcessingTimeTotalEvolveTime

A merger tree processing time estimator that estimates the remaining computation time based on the total time spent evolving nodes in the tree, using a power-law scaling with cosmic time. The time scaling exponent is set by [exponentTime] and the minimum interval between progress updates by [updateInterval].

Parameters

  • [exponentTime] (real; default 0.5d0) — The exponent of cosmic time used in estimating the work associated with evolving a node.

  • [updateInterval] (real; default 10.0d0) — The minimum interval (in seconds) between updates of the estimated time remaining.