Symbolic vs. Algorithmic Differentiation of GSL Integration Routines
Niloofar Safiran and Uwe Naumann
Forward and reverse modes of algorithmic differentiation (AD) transform
implementations of multivariate vector functions as computer programs
into tangent and adjoint code, respectively. The adjoint mode is of
particular interest in large-scale functions due to the independence of
its computational cost on the number of free variables. The additional
memory requirement for the computation of derivatives of the output
with respect to parameters by a fully algorithmic method (derived by
AD) can quickly become prohibitive for large values of n. This can be
reduced significantly by the symbolic approach to differentiation of the
underlying integration routine. Vectorizing gsl routines for integration
and applying symbolic adjoint on them has considerably less memory
requirement with nearly the same runtime overhead and in most cases
faster convergence in comparison with algorithmic adjoint.