Computational
Differentiation Group Logo (1067 bytes)

The Computational Differentiation Project at Argonne National Laboratory

Tools
ADIC
ADIFOR
Other tools

Applications

Reports
Argonne
By users

People
Paul Hovland
Uwe Naumann
Boyana Norris
Michelle Strout
Jean Utke

Autodiff.org

The Computational Differentiation Group at Argonne develops technologies for generating, with minimal human effort, efficient derivative code for models implemented as computer programs. These technologies include compiler-based automatic differentiation tools, new differentiation strategies, and web-based differentiation services. Our research is guided by our collaborations with scientists from a variety of application domains.

News

The 4th International Conference on Automatic Differentiation will be held July 19-23, 2004 in Chicago.

The 2nd Workshop on Automatic Differentiation and Applications was held May 18-21, 2003 in Montreal, Canada as part of ICCSA.

Research

  • Mechanisms for improving the performance of derivative code, including
    • parallel/threaded derivative computation,
    • runtime dataflow analysis,
    • exploitation of sparsity, and
    • machine-tailored preaccumulation strategies.
  • Strategies to exploit high-level knowledge. These so-called computational differentiation strategies exploit the mathematics of scientific libraries such as PETSc and the BLAS and structural features such as narrow interfaces at subroutine boundaries.
  • Integration of AD with toolkits for scientific computing. ADIC is being integrated with the PETSc, TAO, and SUNDIALS toolkits.
  • Scientific application servers. AD is used for derivative computations in the Network Enabled Optimization System (NEOS) server. The ADIC server makes it possible to use AD without installing the software.

Tools

ADIC is the first and only compiler-based AD tool for ANSI C. ADIFOR, developed in collaboration with Rice University, offers full support for Fortran 77. Both tools offer:

  • Support for parallelism. MPI codes can be differentiated (in our next release). Sequential codes can be parallelized via stripmining of the derivative computations.
  • Support for sparsity. SparsLinC library makes it possible to transparently exploit sparsity arising from large sparse Jacobians or gradients of partially separable functions. In addition, when the sparsity pattern is known, coloring can be used to reduce the computational cost.
  • A flexible intrinsic handler, providing various mechanisms for handling exceptions such as the differentiation of sqrt(x) when x=0.
  • A polyalgorithmic Hessian module, utilized by both ADIC and ADIFOR through a common interface to plug-in differentiation modules. The Hessian module tailors the derivative computation strategy to maximize performance for a particular platform.