Next:
PADRE2
Up: Contents
Previous: GRESS
SYNOPSIS:
The Odyssée system produces a Fortran 77 program computing the first
order
derivatives of a function given as a Fortran 77 program. Information on
this system can be found at the
Odyssee home page .
WHOM TO CONTACT:
Christele Faure
Projet SAFIR
INRIA Sophia-Antipolis
2004 route des lucioles
BP 93, 06902 Sophia Antipolis Cedex
FRANCE
Christele.Faure@sophia.inria.fr
,
odyssee@sophia.inria.fr
DOCUMENTATION:
-
First paper:
N. Rostaing, S. Dalmas, and A. Galligo,
Automatic Differentiation in Odyssée,
Tellus, 45A, 1993.
FUNCTIONALITY:
The automatic differentiation system Odyssée takes as input a Fortran 77 subroutine or collection of subroutines and produces the corresponding
subroutines computing the derivatives in different ways:
- Direct mode: Odyssée produces a program computing the tangent
linear application (the Jacobian matrix times a vector).
- Reverse mode: Odyssée produces a program computing the cotangent
linear (or adjoint) application (the transposed Jacobian matrix times a
vector).
The Odyssée system can be used via a graphic interface or a shell language.
- It accepts some syntax extensions of Fortran 77:
include, do while.
- For each subroutine, the input variables with respect to which the
derivatives
will be computed may be arguments of the subroutine or defined in COMMON blocks.
- Unlike previous versions, the current version performs
interprocedural analysis on the set of routines submitted.
HIGHLIGHTS:
Odyssée is written in a high-level language (
objective CAML ,
developed at INRIA). It is an extensible system.
- Strategies
- Different strategies for computing the cotangent
linear application have been implemented.
- Black Box Routines
- The Odyssée system allows to treat
a subroutines calling another one whose source code is not available. The
user has to give the interprocedural information concerning it, and the
system will produce a call to a derivative subroutine written
by the user.
Restrictions:
- A subroutine containing Goto instructions cannot be
differentiated in reverse mode.
- The COMMON blocks must be defined in the same way for all
routines of the program.
- EQUIVALENCEs and POINTERs are not treated by the system.
Next:
PADRE2
Up: Contents
Previous: GRESS