|Title||A Mixed Approach to Adjoint Computation with Algorithmic Differentiation |
|Publication Type||Report |
|Year of Publication||2015 |
|Authors||Kulshreshtha, K, Narayanan, SHK, Albring, T |
|Abstract||Various algorithmic differentiation tools have been developed and applied to large-scale simulation software for physical phenomena. Until now, two strictly disconnected approaches have been used to implement algorithmic differentiation (AD), namely, source transformation and operator overloading. This separation was motivated by different features of the programming languages such as Fortran and C++. In this work we have for the first time combined the two approaches to implement AD for C++ codes. Source transformation is used for core routines that are repetitive where the transformed source can be optimized much better by modern compilers, and operator overloading is used to interconnect at the upper level, where source transformation is not possible because of complex language constructs of C++. We have also devised a method to apply the mixed approach in the same application semiautomatically. We demonstrate the benefit of using this approach using some real world applications.