Development and First Applications of TAC

The paper describes the development of the software tool Transformation of Algorithms in C++ (TAC++) for automatic differentiation (AD) of C(++) codes by source-to-source translation. We have transferred to TAC++ a subset of the algorithms from its well-established Fortran equivalent, Transformation of Algorithms in Fortran (TAF). TAC++ features forward and reverse as well as scalar and vector modes of AD. Efficient higher order derivative code is generated by multiple application of TAC++. High performance of the generated derivate code is demonstrated for five examples from application fields covering remote sensing, computer vision, computational finance, and aeronautics. For instance, the run time of the adjoints for simultaneous evaluation of the function and its gradient is between 1.9 and 3.9 times slower than that of the respective function codes. Options for further enhancement are discussed.

[1]  Nadine Gobron,et al.  Partitioning the Solar Radiant Fluxes in Forest Canopies in the Presence of Snow , 2008 .

[2]  P. Roe Approximate Riemann Solvers, Parameter Vectors, and Difference Schemes , 1997 .

[3]  Uwe Naumann,et al.  "To be recorded" analysis in reverse-mode automatic differentiation , 2005, Future Gener. Comput. Syst..

[4]  S. Forth,et al.  AD tools and prospects for optimal AD in CFD flux Jacobian calculations , 2000 .

[5]  M. Musiela,et al.  The Market Model of Interest Rate Dynamics , 1997 .

[6]  Thomas Kaminski,et al.  Recipes for adjoint code construction , 1998, TOMS.

[7]  Michael B. Giles Monte Carlo evaluation of sensitivities in computational finance , 2007 .

[8]  X. Yi On Automatic Differentiation , 2005 .

[9]  R. Dickinson,et al.  Simplifying the Interaction of Land Surfaces with Radiation for Relating Remote Sensing Products to Climate Models , 2006 .

[10]  T. Gerhold,et al.  Calculation of Complex Three-Dimensional Configurations Employing the DLR-tau-Code , 1997 .

[11]  C. Bendtsen FADBAD, a flexible C++ package for automatic differentiation - using the forward and backward method , 1996 .

[12]  Horst Bischof,et al.  Algorithmic Differentiation: Application to Variational Problems in Computer Vision , 2007, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[13]  Andreas Griewank,et al.  Algorithm 755: ADOL-C: a package for the automatic differentiation of algorithms written in C/C++ , 1996, TOMS.

[14]  Griewank,et al.  On automatic differentiation , 1988 .

[15]  Christian H. Bischof,et al.  ADIC: an extensible automatic differentiation tool for ANSI‐C , 1997, Softw. Pract. Exp..

[16]  P. Glasserman,et al.  Smoking Adjoints: fast evaluation of Greeks in Monte Carlo calculations , 2005 .

[17]  K. Tanabe,et al.  Mathematical Programming: Recent Developments and Applications. , 1990 .

[18]  S. I. Feldman,et al.  A portable Fortran 77 compiler , 1990 .

[19]  Thomas Slawig,et al.  Generating efficient derivative code with TAF: Adjoint and tangent linear Euler flow around an airfoil , 2005, Future Gener. Comput. Syst..

[20]  Christian Bischof,et al.  Adifor 2.0: automatic differentiation of Fortran 77 programs , 1996 .

[21]  U. Naumann,et al.  TBR Analysis in Reverse-Mode Automatic Differentiation , 2003 .

[22]  R. Giering,et al.  Retrieving surface parameters for climate models from Moderate Resolution Imaging Spectroradiometer (MODIS)-Multiangle Imaging Spectroradiometer (MISR) Albedo Products , 2007 .

[23]  Thomas Kaminski,et al.  Recomputations in reverse mode AD , 2000 .

[24]  Christèle Faure Adjoining Strategies for Multi-layered Programs , 2002, Optim. Methods Softw..