March 21st, 2012 — A Multi-Core Algorithmic Differentiation Benchmarking System — Brad Bell

Please join us at 6:45 for pizza sponsored by Summit Group Solutions.


Implementing code that is fast in a multi-core environment is one of the challenges of modern software engineering.

To meet this challenge, future Automatic Differentiation (AD) software will have to avoid excessive synchronization barriers between threads as well as manage memory efficiently.

This talk presents a benchmarking system that is being used as an aid in the development of the C++ AD software package CppAD.

Different threading systems, and different versions of this software package, are easily compared for speed of execution.

As an example of the importance of this benchmark testing, and how it has improved this software package, we compare the results for three versions of CppAD. These versions correspond to improvements in a general purpose C++ multi-threading memory allocator that is now part of the CppAD library.


Dr. Bell received his BA in math and physics from Saint Lawrence University in 1973, his MA in mathematics from the University of Washington in 1976, and his Ph.D. in mathematics from the University of Washington in 1984. Currently he is employed by the Applied Physics Laboratory of the University of Washington. Much of his current work is in collaboration with the UW School of Public Health as a member of the The Institute for Health Metrics and Evaluation. He is also the project manager for the Coin-OR Algorithmic Differentiation project CppAD. His current research is focused on statistically motivated numerical methods for scientific modeling and data analysis. This includes: algorithmic differentiation, Kalman filtering and smoothing, stochastic function estimation (Tikhonov regularization), nonlinear mixed effects estimation, optimization, and monte-carlo simulation.


Video | Slides

CppAD pages are best viewed with Firefox, as they make heavy use of MathML to display math.

CppAD homepage | multi-threading test routine | intro to theory of AD | getting started with CppAD