Expression templates for primal value taping in the reverse mode of algorithmic differentiation. (2nd November 2018) - Sagebaum, M.; Albring, T.; Gauger, N. R.
ABSTRACT: The reverse mode of Algorithmic Differentiation (AD) can be implemented in several ways. The major choices are primal value taping vs. Jacobian taping, managed indices vs. unmanaged indices and operator level taping vs. statement level taping. Most of the current AD tools have implemented only one of the eight possible choices, and the data management of the implementation adds another complexity hierarchy. The focus in this paper is the implementation of primal value taping on a statement level. Statement level taping removes the need to create intermediate values on the AD tape which results in reduced memory compared to operator level taping. The implementation will be done for managed and unmanaged indices in the AD tool CoDiPack. Primal value taping with statement level taping has not yet been implemented in any other AD tool, thus we will analyse the properties of the taping approaches and highlight the important details for an efficient implementation. Furthermore, all existing taping approaches in CoDiPack will be compared with the new primal value taping approach. The comparison have been conducted on a simple toy problem and a fully featured computational fluid dynamics solver in the multi-physics suite SU2.