Data Assimilation Meetings at Reading
Date | Meeting type | Speakers |
9 May 2012 | DARC seminar |
Robin Hogan (Radar and clouds group, UoR) Fast reverse-mode automatic differentiation using expression templates in C++ Further information Gradient-based optimization problems are encountered in many fields, but the associated task of differentiating large computer algorithms can be formidable. The operator-overloading approach to automatically differentiating an algorithm (i.e. automatically performing the adjoint calculation) is the most convenient for the user but current implementations are typically 25-100 times slower than the original algorithm. A new method is presented that uses the expression template programming technique in C++ to provide a compile-time representation of each mathematical expression as a computational graph that can be traversed in either direction. Conventional operator overloading (e.g., as used in the widely used CppAD library) can only propagate information from the most nested part of the expression outwards, but the computations needed to store a symbolic representation of the equivalent differential expression propagate information in the opposite sense. This approach is applied to two lidar forward models, one that is similar to a 1D radiance model, and the other that is similar to a 1D time-dependent advection model. It is found that the resulting implementation can perform reverse-mode differentiation with around 4-4.5 times the computational cost of the original algorithm, which is 6-9 times faster than the CppAD library and only 20-50% slower than a hand-coded adjoint code. The potential application of this to a radar-lidar-radiometer retrieval algorithm for clouds and precipitation will be discussed. |