Project : tropics
Section: New Results
Keywords : aliasing, fortran95, tapenade.
Extensions and new functionalities in tapenade
The work on the extension of tapenade to fortran95 continued. The number of new constructs in fortran95 is a constant challenge to find unifying representations of data and control structures of imperative programs.
This year, we extended the internal data flow analyses of tapenade to finely take into account records (``derived types''). Since different components of a data structure often have different behaviors, a variable of a structured type must be considered as a set of individual variables, on which the analyses may find different results. For example ``activity'' analysis can find out that only some components are active and thus need a derivative. Thus the derivative structured type can hold fewer components.
Benjamin Dauvergne studied in detail the common behavior of tapenade's data flow analyses. The common part of these analyses' strategy was embodied in a new class ``DataFlowAnalyzer'', from which every particular analysis is derived. The general strategy for analyses consists of iterative sweeps on the Call Graph, because of recursivity, and at the procedure level it also consists of iterative sweeps on the Flow Graph, because of control loops. An improved implementation of these sweeps was made, in which cycles in the graphs are detected and treated in a specific manner to avoid redundant analyses. As a result, the time spent on analyses during differentiation has decreased by a factor 10 on large applications.
The above improvements, plus many bug corrections, are available in the latest version 2.1 of tapenade.