Title: Automatic Differentiation of C++ Codes With Sacado (Software Engineering Seminar Series)

Speaker: Eric Phipps, Sandia National Laboratories

Date/Time: Tuesday, November 13, 2007, 11:30 am - 12:30 pm

Location: CSRI Building, Room 90 (Sandia NM)

Brief Abstract: A critical component of predictive simulation is computing derivatives of simulation responses with respect to model states and parameters. Such information is needed for steady-state nonlinear solves, implicit time integration, stability analysis, sensitivity analysis, optimization, error estimation, and uncertainty quantification.  However hand-coding derivatives is time-consuming, error prone, and difficult to verify, particularly for parameter derivatives, adjoints, and higher derivatives.

In this talk we describe Sacado, a Trilinos package for automatic differentiation of C++ codes, being developed at Sandia.  Automatic differentiation (AD) is a technique for computing analytic derivatives in simulation codes without hand-coding the derivative computation itself, and is based on simple mathematical and computer science principles.  Sacado is designed for incorporation into large-scale C++ codes and leverages the C++ language itself to implement AD using operator overloading and templating. This approach has proven to be quite successful in the Charon application code by enabling rapid development of complex physics and providing accurate and efficient derivative calculations for advanced analysis techniques such as optimization and stability analysis.

The focus of this talk will be on understanding the software engineering required to effectively incorporate Sacado automatic differentiation tools into large C++ simulation codes.  We will first provide a brief overview of how AD works and how it is specifically implemented in Sacado.  We will then discuss the steps needed to incorporate these tools into large C++ simulation codes, using the Sacado::FEApp 1-D finite element example application as a demonstration example.  Finally we will discuss some of the difficulties one typically encounters when implementing these tools in real codes and approaches we have learned to deal with them.

CSRI POC: Todd Coffey, (505) 845-0520, Heidi Thornquist, (505) 284-8426, Bob Heaphy,
(505) 284-5418



©2005 Sandia Corporation | Privacy and Security | Maintained by Bernadette Watts and Deanna Ceballos