ADOL-C

A Package for Automatic Differentiation

of Algorithms Written in C/C++



 Current versions:
 
  • For UNIX / LINUX:
  • For Windows / DOS:
ADOL-C 1.8.7  (March 2000) 
ADOL-C 1.8.?  (Please contact us for detailed information!)

go to: Synopsis - Functionality - Availability - Sources and ArticlesApplications - Contact



Synopsis

The package ADOL-C facilitates the evaluation of first and higher derivatives of vector functions that are defined by computer programs written in C or C++. The resulting derivative evaluation routines may be called from C/C++, Fortran, or any other language that can be linked with C.

The numerical values of derivative vectors are obtained free of truncation errors at a small multiple of the run time and randomly accessed memory of the given function evaluation program.



Functionality

ADOL-C uses the operator overloading concept to compute in forward and reverse mode of automatic differentiation:

for a function that is given as a C/C++ code. The user has to make a few modifications to the evaluation code: ADOL-C provides: The operator overloading is used to produce the tape, an internal representation of the evaluation section marked. For each operation on the tape Instead of calling the routines for the forward and reverse mode directly the user may apply appropriate drivers to get the desired derivatives for a scalar-valued function scalar.gif.  Some of these comvientient drivers are listed in the following table:
 
function(tag,m,n,x,y) $y = f(x) $
gradient(tag,n,x,g) gradient.gif
hessian(tag,n,x,H) $H =\,$ lower triangle of nabla1.gif
hess_vec(tag,n,x,v,z) nabla2.gif
lagra_hess_vec(tag,m,n,x,v,u,h) nabla3.gif

For vector-valued functions vector.gif ADOL-C provides also easy to use drivers. Again some of them are listed below:
 

function(tag,m,n,x,y) $y = f(x) $
jacobian(tag,m,n,x,J) $f^\prime(x) = J(x) = \left[\frac{\partial f_i}{\partial x_j}\right] \left. \right\vert _x$
jac_vec(tag,m,n,x,v,j) $j = J(x)\,v $
vec_jac(tag,m,n,repeat,x,u,j) $j = u^T\,J(x)$

Drivers for ODE's and routines to get full higher order derivative tensors are available. Storage and runtime requirements are clearly predictable. The tape is transferred to external mass storage devices and only strictly sequentially accessed. The much smaller randomly accessed memory can be precalculated using information on the tape.

We have developed a beta version of a FORTRAN90 front-end for ADOL-C which is called ADOL-F. It provides almost the same range of functionality of ADOL-C Version 1.7 for the differentiation of FORTRAN code.



Availability

ADOL-C is available free of charge. Check the ftp sites for the source, the manual and examples. ADOL-C was tested on several platforms
including Sun, LinuX, SGI, DEC, and IBM. ADOL-C Version 1.6 for Borland C++ is available on the same sites (README of the PC version). There are some ports of the new ADOL-C versions to Windows; please, contact us for detailed information.

Read about the features planned for ADOL-C 2.0.


    Source and Articles

Software:

Papers:

Applications
  • The NEOS Server at Argonne National Laboratory

  • (a Network Enabled Optimization System for solving optimization problems remotely over the Internet)
  • The ADMIT-Project at Cornell University

  • (a MATLAB interface to ADOL-C and other AD related links)


    Whom to Contact

    Andreas Griewank
    Institute of Scientific Computing
    Technical University of Dresden
    Mommsenstr. 13
    01062 Dresden, Germany
    phone: +49 (0)351 463 4266
    FAX: +49 (0)351 463 7114
    griewank@math.tu-dresden.de

    Olaf Vogel
    Institute of Scientific Computing
    Technical University of Dresden
    Mommsenstr. 13
    01062 Dresden, Germany
    phone: +49 (0)351 463 4082
    FAX: +49 (0)351 463 7114
    vogel@math.tu-dresden.de

    or mail to adol-c@math.tu-dresden.de


    [return to:] Institute homepage

     vogel@math.tu-dresden.de; (Feb/14/2000)