skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: Autyomatic Differentiation of C/C++

Software ·
OSTI ID:1231213

Automatic differentiation (AD) tools mechanize the process of developing code for the computation of derivatives. AD avoids the inaccuracies inherent in numerical approximations. Furthermore, sophisticated AD algoirthms can often produce c ode that is more reliable and more efficient than code written by an expert programmer. ADIC is the first and only AD tool for C and C++ based on compiler technology. This compiler foundation makes possible analyses and optimizations not available in toos based on operator overloading. The earliest implementations of ADIC included support for ANSI C applications, ADIC 2.0 lverages EDG, a commercial C/C++ parser, to provide robust C++ differentiation support. Modern AD tools, including ADIC are implemented in a modular way, aiming to isolate language-dependent program analyses and semantic transformations. The component design leads to much higher implementation quality because the different components can be implemented by experts in each of the different domains involved. For example, a compiler expert can focus on parsing, canonicalizing, and unparising C and C++, while an expert in graph theory and algorithms can produce new differentiation modules without having to worry about the complexity of parsing and generating C++ code. Thsi separation of concerns was achieved through the use of language-independent program analysis interfaces (in collaboration with researcgers at Rice University) and a language-independent XML representation of the computational portions of programs (XAIF). In addition to improved robustness and faster development times, this design naturally enables the reuse of program analysis algorithms and differentiation modules in compiler-based AD tools for other languages. In fact, the analysis and differention components are used in both ADIC and the Open AD Fortran front-end (based on Rice's Open64 compiler.

Short Name / Acronym:
ADIC; 002409MLTPL00
Site Accession Number:
SF-05-127
Version:
00
Programming Language(s):
Medium: X; OS: Linux, any version, most other Unix environments
Research Organization:
Argonne National Laboratory (ANL), Argonne, IL (United States)
Sponsoring Organization:
USDOE/Office of Mathematical, Information and Computational Sciences
DOE Contract Number:
DE-AC02-06CH11357
OSTI ID:
1231213
Country of Origin:
United States

Similar Records

Related Subjects