Automatic Differentiation and Adjoint Calculation Softwares
This theme is coordinated by To Be Determined
Variational formulations of data assimilation problems require the calculation of the gradient of the cost function.
For most real problems (i.e. caracterized by a significant number of degrees of freedom), its direct computation is
not affordable by any computer, even in a remote future. The adjoint method is an elegant way to circumvent the
problem by providing the gradient at the cost of few model integrations. This requires the computation of the
"backward" model, the so-called adjoint model.
A general introduction, although illustrated with TAPENADE application, to the automatic differentiation technique
can be found here.
Softwares have been developped in the past few years to generate automatically the derivatives, the adjoint and the
tangent linear of a model. The two main approaches are:
- The Automatic Differentiation by Code Generation
These tools are augmenting codes by explicitely rewritting a new code for derivatives computation
and/or reverse mode. The variety of tools available makes it possible to process codes written in
Fortran90, Fortran77, C, C++, and even in high level languages like Matlab. The developpment of these
softwares is not over because of recurring difficulties. In particular, the treatment of logical
branches for reverse mode and the compromise that has to be found for the storage of intermediate
quantities versus their recomputation, are still important issues.
- The Operator Overloading Tools
The philosophy of these tools is completely different. The original code remains virtually unchanged,
but the size of the variables is expanded to allow derivatives storage.
A quite exhaustive list of such softwares can be found
Here are some of the most importants, some of them beeing used within SAMA group:
| Operator Overloading Tools : |