Sensitivity Analysis and Design Optimization through Automatic Differentiation

Paul Hovland, ANL

Automatic, or algorithmic, differentiation (AD) is a technique for transforming a program or subprogram that computes a mathematical function into one that computes the derivatives of that function. We describe the implementation and application of automatic differentiation tools. We highlight recent advances in the combinatorial algorithms and compiler technology that underlie successful implementation of automatic differentiation tools. We demonstrate the importance of accurate derivatives to numerical algorithms and discuss applications of automatic differentiation in design optimization and sensitivity analysis. We also describe ongoing research in the design of language-independent source transformation infrastructures and memory management for automatic differentiation algorithms.