Team tropics

Overall Objectives
Scientific Foundations
Application Domains
New Results
Inria / Raweb 2004
Project: tropics

Project : tropics

Section: Software


Participants : Laurent Hascoët [correspondant], Mauricio Araya-Polo, Benjamin Dauvergne, Christophe Massol, Valérie Pascual.

tapenade is the Automatic Differentiation tool developed by the TROPICS team. tapenade progressively implements the results of our research about models and static analyses for AD. From this standpoint, tapenade is a research tool. Our objective is also to promote the use of AD in the scientific computation world, and therefore in the industry. Therefore the team constantly maintains tapenade to meet the demands of our industrial users. tapenade can be simply used as a web server, available at the URL It can also be downloaded and installed from our FTP server A documentation is available on our web page and as an INRIA technical report (RT-0300)

tapenade differentiates computer programs according to the model described in section 3.1. It supports three modes of differentiation:

A obvious fourth mode could be the vector reverse mode, which is not yet implemented. Many other modes exist in the other AD tools in the world, that compute for example higher degree derivatives or Taylor expansions. For the time being, we restrict ourselves to first-order derivatives and we put our efforts on the reverse mode. But as we said before, we also view tapenade as a platform to build new program transformations, in particular new differentiations. This could be done in cooperation with other teams.

Like any program transformation tool, tapenade needs sophisticated static analyses in order to produce an efficient output. Concerning AD, the following analyses are a must, and tapenade now performs them all:

Several other strategies are implemented in tapenade to improve the differentiated code. For example, a data-dependence analysis allows tapenade to move instructions around safely, gathering instructions to reduce cache misses. Also, long expressions are split in a specific way, to minimize duplicate sub-expressions in the derivative expressions.

The input languages of tapenade today are fortran77 and fortran95. Notice however that the internal representation of programs is language-independent, as shown on figure 4, so that extension to other languages should be easier. Development of the prototype of a tapenade for c started in december.

There are two user interfaces for tapenade. One is a simple command that can be called from a shell or from a Makefile. The other is interactive, using javaswing components and html pages. The interactive interface displays the differentiated programs, with html links that implement source-code correspondence, as well as correspondence between error messages and locations in the source. This is shown on figure 3.

Figure 3. tapenade output interface, with source-code-error correspondence

tapenade is now available for linux, sun, or windows-xp platforms.

Figure 4 shows the architecture of tapenade. It is implemented mostly in java, apart from the front-ends which are separated and can be written in their own languages.

Figure 4. Overall Architecture of tapenade

Notice the clear separation between the general-purpose program analyses, based on a general representation, and the differentiation engine itself. Other tools can be built on top of the Imperative Language Analyzer platform.

The end-user can also specify properties of external or black-box routines. This is essential for real industrial applications that use many libraries. The source of these libraries is generally hidden. However AD needs some information about these black-box routines in order to produce efficient code. tapenade lets the user specify this information in a separate signature file.


Logo Inria