AD Tool: OpenAD
Introduction
Applications
Tools
Research Groups
Workshops
Publications
My Account
About
Impress

OpenAD


Summary:
OpenAD
is a source transformation tool that provides a language
independent framework for the development and use of AD algorithms. It interfaces with language specific front-ends via an XML representation of the numerical core. Currently, Open64 is the front-end for FORTRAN and EDG/Sage3 the front-end for C/C++.

URL: http://www.mcs.anl.gov/OpenAD/

Developers:
Mode: Forward
Reverse
 
Method: Source transformation
 
Supported Language: C/C++
Fortran77
Fortran95

Features:
The tool is under development within the Adjoint Compiler Technology & Standards project. The project has a twofold goal.

  • Provide a framework for the implementation of source transformation based AD algorithms
  • Create an adjoint compiler capable of handling the Fortran90 code of the
    MIT general circulation model.

The tool's design provides two interfaces.

  • the XML based interface to the language specific front end (XAIF) and certain features supporting the unparsing of the transformed representation by the front-end,
  • a C++ interface to the representation of the numerical kernel of the code represented in xaifBooster as well as to the already implemented transformation algorithms.

The internal design of xaifBooster separates the internal representation from the algorithm implementation code and the transformation results. This improves the reusability of algorithms and the implementation of transformations with relatively little coding effort. Among the already implemented algorithms are:

  • code generation for the local partials along with ssa transformation where necessary. (linearization)
  • local preaccumulation of Jacobians with cross-country elimination sequences interfacing with algorithms for computing elimination sequences:

    • elimination sequences with heuristics for trade-offs between operation count and data locality for vertex/edge/face elimination, or alternatively
    • using the external Angel library

  • code augmentation for taping
  • code generation for reversing through preaccumulated Jacobians
  • code generation for control flow reversal
  • code generation integrating taping and reversal steps with checkpointing

The ability to implement transformation algorithms
should serve the AD community as a
an algorithm testing ground that
doesn't require to recreate the entire infrastructure typically
needed by source transformation tools.

In connection with the front-ends this framework results into tools
for different languages.

  • Fortran90 support with Open64 and OpenADFortTk
  • C/C++ support with EDG/Sage3 (*)


(*) All software mentioned here is open source with the
exception of EDG/Sage and
the components that directly use it.


Supported Platforms:
  • Unix/Linux


Licensing: free with restrictions

Entries in our publication database that actually use OpenAD in the numerical experiments:  34

The following diagram shows these entries versus the year of the publication.

10+
#Entries
0
1
3
4
4
4
1
4
2
1
1
7
1
1
'02 '03 '04 '05 '06 '07 '08 '09 '10 '11 '12 '14 '16
Year

Related Research Groups:

  

Contact:
autodiff.org
Username:
Password:
(lost password)