Since 1998, I've been working on Automatic Differentiation (AD). INRIA allowed Valerie Pascual and I to start a new research team on AD, TROPICS. Here is a detailled manifest (in French), that defines the initial goals of TROPICS (1999).
On one side, I try to promote the use of AD in the scientific computation community. This means not only applying AD technology to real programs, but also define methodologies for a clever use of AD derivatives in optimization problems or inverse problems. For example, article [HGP05] focuses on application of our AD tool TAPENADE (user's guide: [Hascoet2004T2u]) in the reverse mode to compute adjoints, whereas articles [CDKH03] and [Hascoet2003ADf] focus on methodologies to use the computed adjoints in shape optimization problems.
On the other side, I try to apply the theories and techniques of compilation and parallelization to Automatic Differentiation. An AD tool is just another program analysis and transformation engine. Well known techniques such as data-flow analyses can be applied to generate better differentiated programs. Article [HNP04] is just one example: we describe formally two specific AD analyses using data-flow equations, implemented in TAPENADE, and give some complexity results. Similarly, article [Hascoet2005TAD] studies the data-flow analyses of adjoint programs. Also [Hascoet2001AIC] proposes an specific model for reverse AD, improved for the special (and frequent) case of loops with independent iterations. The improvement relies on a isomorphism property between the data dependence graph of the adjoint program and that of the original program, which is demonstrated in [Hascoet2001TDG].
In January 2005, I defended a "Habilitation" [hdrHascoet05], which presents my recent work as transposing the experience and technology from Parallelization to Differentiation.
To get a broader view of all aspects of AD, you can take a look at [Corliss2001ADo] that contains selected papers from the AD2000 conference, which we co-organized in Nice in may 2000.
Before 1998, I've been working on semi-automatic parallelization tools. This was done both inside INRIA and with private companies CONNEXITE then SIMULOG. Inside SIMULOG's fortran analysis tool FORESYS, I developped the parallelization component PARTITA. Here are two reports [Hascoet94a] and [Hascoet94b] on the structures, algorithms, and functionalities in PARTITA. PARTITA was used in the European project POST [ABCHKLWW00] to parallelize towards OpenMP. I also defined a special parallelization method for SPMD (Single Program, Multiple Data) parallelization of mesh-based algorithms, which is described in articles [Hascoet97], [Hascoet01b] and in the more detailled report [Hascoet99]
Before 1990, I was member of the INRIA team CROAP, who developped the CENTAUR environment. In CENTAUR, one can define the syntax and semantics of any computer language, giving abstract, high-level specifications, and getting in return a programming environment for this language. The abstract formalism for the semantics is called Natural Semantics [CDDHK85], expressed in the "TYPOL" language. I wrote my doctorate thesis [phdHascoet87] on how to take a type-checker written in this formalism, and make it incremental with respect to program modifications. This required a formalism to designate and combine modifications in trees, described in [ClementHascoet88]. TYPOL inference rules can be combined to form proof trees, and I wrote a tool for that [Hascoet88b], refined in [Hascoet89]. A very stimulating and pleasant experience was to work with people in the Partial Evaluation community, making the link with Natural Semantics. I could define a Partial Evaluation on TYPOL programs and proof trees [Hascoet88a], to turn a TYPOL semantics file into a compiler.
|Try the Automatic Differentiation tool TAPENADE, available here as a web server. Here is some documentation, and some FORTRAN files you may use as a first example: sub1.f, sub2.f, sub3.f, comcc.inc. And if you wonder what tapenade is, here's the recipe!|
The research team Tropics
Also, the www.autodiff.org, which is the site of the Automatic Differentiation community, managed by colleagues in Aachen and Argonne.