Homepage Inria website
  • Inria login
  • The Inria's Research Teams produce an annual Activity Report presenting their activities and their results of the year. These reports include the team members, the scientific program, the software developed by the team and the new results of the year. The report also describes the grants, contracts and the activities of dissemination and teaching. Finally, the report gives the list of publications of the year.

  • Legal notice
  • Cookie management
  • Personal data
  • Cookies

Section: New Results

Towards Algorithmic Differentiation of C++

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

We made progress towards the extension of Tapenade for C++. Last year, an external parser for C++ was built on top of Clang-LLVM and connected to the input formalism “IL” of Tapenade, but the internals of Tapenade were not able to handle the new constructs present in this input. This year, integration of C++ was pushed further by taking into account many of the new constructs (namespaces, classes, constructors and destructors) in the Internal Representation(IR) of Tapenade. Not surprisingly, this implied deep changes in several areas of Tapenade code. The IR of Tapenade now contains classes, constructors and destructors, and also has a faithful representation for namespaces. The textual nested structure and the control-flow parts of the IR are correct. The symbol tables and the representation for memory locations are still under development.

As a result, Tapenade is now able to input its first C++ files and is able to output them, but without transformation. Although not advertised nor documented, the functionality is present in the latest release 3.14. Data-Flow analysis and code transformation (e.g. AD) will not be possible until we have a correct IR about variables and their memory locations. This work is going on.

This work benefited from the expertise in C++ of Frederic Cazals (Inria ABS team). The ABS team provided a large test application code (SBL, for Molecular Dynamics, which will be our first C++ target.