Debugging with dynamic slicing and backtracking
Software—Practice & Experience
Beyond induction variables: detecting and classifying sequences using a demand-driven SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Algorithm 755: ADOL-C: a package for the automatic differentiation of algorithms written in C/C++
ACM Transactions on Mathematical Software (TOMS)
Advanced compiler design and implementation
Advanced compiler design and implementation
Evaluating derivatives: principles and techniques of algorithmic differentiation
Evaluating derivatives: principles and techniques of algorithmic differentiation
Communications of the ACM
Automatic differentiation of algorithms: from simulation to optimization
Automatic differentiation of algorithms: from simulation to optimization
The Theory of Parsing, Translation, and Compiling
The Theory of Parsing, Translation, and Compiling
ICCS '02 Proceedings of the International Conference on Computational Science-Part II
Optimal accumulation of Jacobian matrices by elimination methods on the dual computational graph
Mathematical Programming: Series A and B
The Value Evolution Graph and its Use in Memory Reference Analysis
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
"To be recorded" analysis in reverse-mode automatic differentiation
Future Generation Computer Systems
Markowitz-type heuristics for computing Jacobian matrices efficiently
ICCS'03 Proceedings of the 2003 international conference on Computational science: PartII
Source templates for the automatic generation of adjoint code through static call graph reversal
ICCS'05 Proceedings of the 5th international conference on Computational Science - Volume Part I
OpenAD/F: A Modular Open-Source Tool for Automatic Differentiation of Fortran Codes
ACM Transactions on Mathematical Software (TOMS)
Journal of Discrete Algorithms
Hi-index | 0.00 |
Numerical simulations of physical, chemical, and economical processes play an increasingly important role in modern science and engineering. The implementation of mathematical models of real-world applications on a computer facilitates both the speed and the depth of our understanding of the behavior of the respective systems. Derivative models of the computer programs are required to make the transition from pure simulation to the highly desirable optimization of the numerical models with respect to a potentially very large number of input parameters. Such models can be generated automatically from the given numerical program by a source transformation technique known as automatic differentiation. Reversal of the control flow is especially important for the generation of adjoint derivative models. We describe an approach to the control flow reversal of structured programs motivated by the significant weakness of approaches that do not exploit the result of control-flow analysis. Our approach is used to automatically generate adjoint code for numerical programs by semantic source transformation. After a short introduction to applications and the implementation tool set, we motivate the proposed approach with a simple example. We present a novel preaccumulation algorithm for local Jacobian matrices at the level of basic blocks. The main part of the paper covers the reversal of structured control flow graphs. First we show the algorithmic steps for simple branches and loops. We give a detailed algorithm for the reversal of arbitrary combinations of loops and branches based only on the structural information in a general control flow graph. Dependencies between computations and their enclosing control flow constructs can lead to inefficient adjoint code. We formulate a set of conditions that allows for considerable efficiency gains in the adjoint code while permitting a reasonably simple modification of the reversal algorithms for specially designated control flow subgraphs. We present a sensitivity computation of an oceanographic application that illustrates the benefits of this modified approach.