The following technical report is available from
http://aib.informatik.rwth-aachen.de:
6. Fachgespräch Sensornetzwerke
Klaus Wehrle (editor)
AIB 2007-11
This report contains the proceedings of the 6. Fachgespräch
Sensornetzwerke of the der GI/ITG Fachgruppe "Kommunikation und Verteilte
Systeme", which was held on July 16-17, 2007 in Aachen, Germany.
The following technical report is available from
http://aib.informatik.rwth-aachen.de:
OpenAD/F: A Modular, Open-Source Tool for Automatic Differentiation of
Fortran Codes
Jean Utke, Uwe Naumann, Mike Fagan, Nathan Tallent, Michelle Strout,
Patrick Heimbach, Chris Hill, and Carl Wunsch
AIB 2007-14
The OpenAD/F tool allows the evaluation of derivatives of functions
defined by a Fortran program. The derivative evaluation is performed by
a Fortran code resulting from the analysis and transformation of the
original program that defines the function of interest. OpenAD/F has
been designed with a particular emphasis on modularity, flexibility,
and the use of open source components. While the code transformation
follows the basic principles of automatic differentiation, the tool
implements new algorithmic approaches at various levels, for example,
for basic block preaccumulation and call graph reversal. Unlike most
other automatic differentiation tools, OpenAD/F uses components provided
by the OpenAD framework, which supports a comparatively easy extension
of the code transformations in a language-independent fashion. It uses
code analysis results implemented in the OpenAnalysis component. The
interface to the language-independent transformation engine is an
XML-based format, specified through an XML schema. The implemented
transformation algorithms allow efficient derivative computations using
locally optimized cross-country sequences of vertex, edge, and face
elimination steps. Specifically, for the generation of adjoint codes,
OpenAD/F supports various code reversal schemes with hierarchical
checkpointing at the subroutine level. As an example from geophysical
fluid dynamics a nonlinear time-dependent scalable, yet simple, barotropic
ocean model is considered. OpenAD/F's reverse mode is applied to compute
sensitivities of some of the model's transport properties with respect
to gridded fields such as bottom topography as independent (control)
variables.
The following technical report is available from
http://aib.informatik.rwth-aachen.de:
Second-Order Adjoints by Source Code Manipulation of Numerical Programs
Uwe Naumann, Michael Maier, Jan Riehme, and Bruce Christianson
AIB 2007-13
The analysis and modification of numerical programs in the context
of generating and optimizing adjoint code automatically probably
ranges among the technically and theoretically most challenging
source transformation algorithms known today. A complete compiler
for the target language (Fortran in our case) is needed to cover the
technical side. This amounts to a mathematically motivated semantic
transformation of the source code that involves the reversal of the
flow of data through the program. Both the arithmetic complexity and
the memory requirement can be substantial for large-scale numerical
simulations. Finding the optimal data-flow reveral schedule turns out to
be an NP-complete problem. The same complexity result applies to other
domain-specific peephole optimizations. In this paper we present a first
research prototype of the NAGWare Fortran compiler with the ability to
generate adjoint code automatically. Moreover, we discuss an approach
to generating second-order adjoint code for use in Newtontype algorithms
for unconstrained nonlinear optimization. While the focus of this paper
is mostly on the compiler issues some information on the mathematical
background will be found helpful for motivational purposes.
The following technical report is available from
http://aib.informatik.rwth-aachen.de:
An L-Attributed Grammar for Adjoint Code
Uwe Naumann
AIB 2007-12
Gradients of high-dimensional functions can be computed efficiently
and with machine accuracy by so-called adjoint codes.We present an
L-attributed grammar for the single-pass generation of intraprocedural
adjoint code for a simple imperative language (a subset of C). Our ideas
can easily be applied to any programming language that is suitable for
syntax-directed translation. Moreover the conceptual insights are useful
in the context of multi-pass generation of adjoint code. Our focus is
on correctness. The necessary domain-specific code optimizations are
beyond the scope of this paper. We give references to corresponding work
in this area.