BibTeX
@ARTICLE{
Hogan2014FRM,
author = "Robin J. Hogan",
title = "Fast ReverseMode Automatic Differentiation Using Expression Templates in {C++}",
journal = "{ACM} Transactions on Mathematical Software",
pages = "26:126:24",
url = "http://doi.acm.org/10.1145/2560359",
accepted = "9 December 2013",
abstract = "Gradientbased optimization problems are encountered in many fields, but the
associated task of differentiating large computer algorithms can be formidable. The
operatoroverloading approach to performing reversemode automatic differentiation is the most
convenient for the user but current implementations are typically 1035 times slower than the
original algorithm. In this paper a fast new operatoroverloading method is presented that uses the
\textit{expression template} programming technique in C++ to provide a compiletime
representation of each mathematical expression as a computational graph that can be efficiently
traversed in either direction. Benchmarking with four different numerical algorithms shows this
approach to be 2.69 times faster than current operatoroverloading libraries, and 1.37.7 times
more efficient in memory usage. It is typically less than 4 times the computational cost of the
original algorithm, although poorer performance is found for all libraries in the case of simple
loops containing no mathematical functions. An implementation is freely available in the
\textit{Adept} C++ software library.",
volume = "40",
number = "4",
year = "2014",
month = "jun",
ad_tools = "Adept"
}
