 TAF: Transformation of Algorithms in Fortran

Overview of Applications:

Lines
# of Fortran source code lines with comments and blank lines removed.

Main Loop
Describes the main time integration loop, if any.
• evolving: integrates a system forward in time
TLM
Column TLM shows CPU time for evaluating function (model) plus first derivative in forward mode (tangent linear model, TLM) in multiples of the CPU time to evaluate the function only (CPU time ratio).

In most of the applications the TLM computes the product of Jacobian times one vector. Whereever there is more than one vector we print: CPU time ratio / # of vectors.

The entry "Yes" means that there is a TLM, but we don't have the performance, whereas "-" means that there is no TLM.

Column ADM shows CPU time for evaluating function (model) plus first derivative in reverse mode (adjoint model, ADM) in multiples of the CPU time to evaluate the function only (CPU time ratio).

In all examples the CPU time for the derivative of a scalar valued function is given.

Note that a 2 level checkpointing scheme (see, e.g. Giering and Kaminski, 2002) consumes the CPU time of about one additional function evaluation. For example the adjoint of IMBETHY has a CPU time ratio of about 3.6 - 1 = 2.6 for short integrations, which do not require a checkpointing scheme. 3 level checkpointing costs two additional function evaluations.

comment
Comments on the selected strategy to increase the performance:
• iteration directive: arranges memory efficient handling for integrations that converge to a steady state.
• flow directive: are used to provide information about routines the source code of which is either not available or shall not be differentiated. TAF generates the interfaces to derivative code provided by the user. Self adjoint routines are an example for which it is more efficient to provide the derivative (the routine itself) instead of having TAF generate the adjoint.
• checkpointing: A scheme to allow multiple use of tape space at the cost of additional function evaluations. Generation of such a scheme can be triggered by TAF directives (see e.g. Giering and Kaminski, 2002)
HES
Column HES shows CPU time for evaluating columns of the Hessian (second derivative) in multiples of the CPU time for evaluating the function (CPU time ratio).

If the number of columns is not equal one, we print: CPU time ratio / # of columns.

"-" means that there is no Hessian code.