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:
- Mathematics and Computer Science Division at Argonne National Laboratory
Center for High Performance Software Research at Rice University
Software & Tools for Computational Engineering Research Group at RWTH Aachen
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
- elimination sequences with heuristics for trade-offs between operation count and data locality for vertex/edge/face elimination, or alternatively
- 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.
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||
'02 | '03 | '04 | '05 | '06 | '07 | '08 | '09 | '10 | '11 | '12 | '14 | '16 | ||||
Year |
Related Research Groups: