TAF: Transformation of Algorithms in Fortran
OVERVIEW:
TAF is a source-to-source translator for Fortran 77-95 code,
i.e. TAF accepts Fortran 77-95 code as input,
applies a semantic transformation,
and generates Fortran 77-95 code as output.
TAF supports several semantic transformations.
The most important one is Automatic Differentiation (AD),
i.e. generation of code for evaluation
of the first-order derivative (Jacobian matrix).
This generated code can operate in forward or reverse mode
(tangent linear or adjoint model).
TAF can generate code to evaluate
Jacobian times vector products or the full Jacobian.
Higher order derivative code is generated
by applying TAF multiple times.
Another TAF transformation is Automatic Sparsity Detection (ASD),
i.e. efficient determination of the sparsity structure
of the Jacobian matrix.
This transformation is important,
because the Jacobian's sparsity pattern
can be exploited to render the evaluation of the Jacobian more efficient.
HIGHLIGHTS:
-
Analyses:
-
TAF normalises the code and applies a control flow analysis.
TAF applies an intraprocedural data dependence
and an interprocedural data flow analysis.
Given the independent and dependent variables
of the specified top-level routine,
TAF determines all active routines and variables and produces
derivative code only for those.
-
Directives:
-
TAF accepts several kinds of directives.
Using the reverse mode automatic storing/reading
of required values is triggered by directives.
Multi level checkpointing can be generated
by splitting a loop and inserting directives.
Generating memory efficient adjoint code for iterative
solvers can be triggered by inserting a directive.
Black box (library) routines are handled
by specifying flow information via directives.
-
Readability:
-
TAF generated code is structured an well readable.
-
Parallelisation:
-
TAF offers basic support of OpenMP and MPI.
APPLICATIONS:
There are an
overview
and a list of
references
for some of TAF's applications.
AVAILABILITY:
TAF is a commercial product.
Contact
us to obtain a TAF licence.