Efficient derivative codes through automatic differentiation and interface contraction: an application in biostatistics.
Hovland-P; Bischof-C; Spiegelman-D; Casella-M
SIAM J Sci Comput 1997 Jul-Aug; 18(4):1056-1066
Developing code for computing the first- and higher-order derivatives of a function by hand can be very time consuming and is prone to errors. Automatic differentiation has proven capable of producing derivative codes with very little effort on the part of the user. Automatic differentiation avoids the truncation errors characteristic of divided difference approximations. However, the derivative code produced by automatic differentiation can be significantly less efficient than one produced by hand. This shortcoming may be overcome by utilizing insight into the high-level structure of a computation. This paper focuses on how to take advantage of the fact that the number of variables passed between subroutines frequently is small compared with the number of variables with respect to which one wishes to differentiate. Such an "interface contraction," coupled with the associativity of the chain rule for differentiation, allows one to apply automatic differentiation in a more judicious fashion, resulting in much more efficient code for the computation of derivatives. A case study involving the ADIFOR (Automatic Differentiation of Fortran) tool and a program for maximizing a logistic-normal likelihood function developed from a problem in nutritional epidemiology is examined, and performance figures are presented.
Statistical-analysis; Risk-factors; Occupational-exposure; Antineoplastic-agents; Mathematical-models; Biostatistics
Computer Science Department, University of Illinois at Urbana-Champaign, 1304 W. Springfield Avenue, Urbana, IL 61801
SIAM Journal on Scientific Computing
Harvard University, School of Public Health, Department of Epidemiology and Biostatistics, Boston, Massachusetts