Algorithm 755: ADOL-C: a package for the automatic differentiation of algorithms written in C/C++
ACM Transactions on Mathematical Software (TOMS)
SIAM Journal on Scientific Computing
ADIC: an extensible automatic differentiation tool for ANSI-C
Software—Practice & Experience
Recipes for adjoint code construction
ACM Transactions on Mathematical Software (TOMS)
Evaluating derivatives: principles and techniques of algorithmic differentiation
Evaluating derivatives: principles and techniques of algorithmic differentiation
Efficient derivative computations in neutron scattering via interface contraction
Proceedings of the 2002 ACM symposium on Applied computing
Automatic differentiation of algorithms: from simulation to optimization
Automatic differentiation of algorithms: from simulation to optimization
Adifor 2.0: Automatic Differentiation of Fortran 77 Programs
IEEE Computational Science & Engineering
Graph Layout through the VCG Tool
GD '94 Proceedings of the DIMACS International Workshop on Graph Drawing
Modeling the performance of interface contraction
ACM Transactions on Mathematical Software (TOMS)
Applying Mathematica and webMathematica to graph coloring
Future Generation Computer Systems
Hi-index | 0.00 |
Automatic differentiation is a powerful technique for evaluating derivatives of functions given in the form of a high-level programming language such as Fortran, C, or C++. This technique is superior, in terms of accuracy, to numerical differentiation because it avoids the truncation error involved in divided difference approximations. In automatic differentiation, the program is treated as a potentially very long composition of elementary functions to which the chain rule of differential calculus is applied over and over again. Because of the associativity of the chain rule, there is room for different strategies computing the same numerical results but whose computational cost may vary significantly. Several strategies exploiting high-level structure of the underlying computer code are known to reduce computational cost as opposed to blindly applying automatic differentiation. An example includes "interface contraction" where one takes advantage of the fact that the number of variables passed between subroutines is small compared with the number of propagated directional derivatives. Unfortunately, these so-called narrow interfaces are not immediately available. The present study investigates the use of the VCG graph drawing tool to recognize narrow interfaces in the computational graph, a certain directed acyclic graph used to represent data dependences of variables in the underlying computer code.