A differentiation-enabled Fortran 95 compiler

The availability of first derivatives of vector functions is crucial for the robustness and efficiency of a large number of numerical algorithms. An upcoming new version of the differentiation-enabled NAGWare Fortran 95 compiler is described that uses programming language extensions and a semantic code transformation known as automatic differentiation to provide Jacobians of numerical programs with machine accuracy. We describe a new user interface as well as the relevant algorithmic details. In particular, we focus on the source transformation approach that generates locally optimal gradient code for single assignments by vertex elimination in the linearized computational graph. Extensive tests show the superiority of this method over the current overloading-based approach. The robustness and convenience of the new compiler-feature is illustrated by various case studies.

[1]  John D. Pryce,et al.  Performance Issues for Vertex Elimination Methods in Computing Jacobians Using Automatic Differentiation , 2002, International Conference on Computational Science.

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

[3]  Andreas Griewank,et al.  Evaluating derivatives - principles and techniques of algorithmic differentiation, Second Edition , 2000, Frontiers in applied mathematics.

[4]  Christian Bischof,et al.  Using ADIFOR and ADIC to provide Jacobians for the SNES component of PETSc , 1997 .

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

[6]  Uwe Naumann,et al.  Computing Adjoints with the NAGWare Fortran 95 Compiler , 2006 .

[7]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[8]  Martin Berz,et al.  Computational differentiation : techniques, applications, and tools , 1996 .

[9]  Mohammad R. Haghighat,et al.  Hierarchical approaches to automatic differentiation , 1996 .

[10]  John D. Pryce,et al.  Jacobian code generated by source transformation and vertex elimination can be as efficient as hand-coding , 2004, TOMS.

[11]  Andreas Griewank,et al.  Automatic Differentiation of Algorithms: From Simulation to Optimization , 2000, Springer New York.

[12]  Lois Curfman McInnes,et al.  TAO users manual. , 2003 .

[13]  Uwe Naumann,et al.  Towards differentiation-enabled Fortran 95 compiler technology , 2003, SAC '03.

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

[15]  Uwe Naumann,et al.  Optimal accumulation of Jacobian matrices by elimination methods on the dual computational graph , 2004, Math. Program..

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

[17]  Jean Utke,et al.  Flattening Basic Blocks , 2006 .

[18]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[19]  Christian Bischof,et al.  The ADIFOR 2.0 system for the automatic differentiation of Fortran 77 programs , 1997 .

[20]  B. M. Averick,et al.  The MINPACK-2 test problem collection (preliminary version) , 1991 .

[21]  J. Utke,et al.  OPTIMALITY-PRESERVING ELIMINATION OF LINEARITIES IN JACOBIAN ACCUMULATION , 2005 .

[22]  C. R. Sage,et al.  MATHEMATICS AND COMPUTER SCIENCE DIVISION. , 1967 .

[23]  Seth D. Bergmann,et al.  Compilers , 1973, CSC '73.

[24]  Chris Phillips,et al.  Numerical methods in practice : using the NAG Library , 1988 .

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

[26]  M. Powell,et al.  On the Estimation of Sparse Jacobian Matrices , 1974 .

[27]  A. Griewank,et al.  On the calculation of Jacobian matrices by the Markowitz rule , 1991 .

[28]  Richard J. Fateman,et al.  Automatic Differentiation of Algorithms: Theory, Implementation, and Application (Andreas Griewank and George F. Corliss, eds.) , 1993, SIAM Rev..

[29]  Christian Bischof,et al.  ADIC: an extensible automatic differentiation tool for ANSI-C , 1997 .

[30]  Jorge J. Moré,et al.  Automatic Differentiation Tools in Optimization Software , 2000, ArXiv.

[31]  William Gropp,et al.  PETSc 2.0 users manual , 2000 .

[32]  R. E. Wengert,et al.  A simple automatic derivative evaluation program , 1964, Commun. ACM.

[33]  Jean Utke,et al.  Separating language dependent and independent tasks for the semantic transformation of numerical programs , 2004, IASTED Conf. on Software Engineering and Applications.

[34]  Barry Smith,et al.  Making automatic differentiation truly automatic: coupling PETSc with ADIC , 2002, Future Gener. Comput. Syst..

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

[36]  John D. Ramsdell,et al.  Estimation of Sparse Jacobian Matrices , 1983 .