EN FR
EN FR


Section: New Results

Towards Algorithmic Differentiation of C++

Participants : Laurent Hascoët, Benoit Dufumier, Frederic Cazals [ABS team, Inria Sophia-Antipolis] , Louis Becquey [ABS team, Inria Sophia-Antipolis] , Valérie Pascual.

We started the extension of Tapenade for C++. This year's first step is to connect an external C++ parser to the input formalism of Tapenade: IL. IL is an abstract language that contains the usual constructs of imperative languages. For example, the three existing parsers for Tapenade (Fortran, Fortran 95, and C) all produce Tapenade input in the form of an IL tree. Our goal was therefore to select a C++ parser or front-end and to make it produce IL trees. In parallel, our goal was also to identify the new operators, specific to Object-Oriented languages, that we must add to IL to capture C++ codes.

During their summer internship, students Benoit Dufumier from SUPELEC and Louis Becquey from INSA Lyon have drafted a C++ front-end for Tapenade, based on the tool “Clang-LLVM”. They also added the new operators required into IL, and started the developments in Tapenade to manage them. At present, Tapenade is still unable to differentiate a C++ code, but it can parse and analyze a few toy C++ codes. Still, the latest release 3.13 of Tapenade does not provide any meaningful result for C++ codes yet. This work is going on.

This work benefited from the expertise in C++ of Frederic Cazals (Inria ABS team). Frederic Cazals jointly supervised both students during their internship, funded by the local Inria programme “masters transverses”. The ABS team also provided the first C++ test codes and will eventually provide a large application code for Molecular Dynamics.