cppad_thread

A Multi-Core Benchmark Used to Improve Algorithmic Differentiation

Abstract

Implementing code that is efficient in a multi-core environment is one of the challenges of modern software engineering. To meet this challenge, future software, including Automatic Differentiation (also called Algorithmic Differentiation and abbreviated as AD) will have to avoid excessive synchronization barriers between threads as well as manage memory efficiently. We present an application of Newton’s method that finds all the zeros of a nonlinear function in an interval. This is being used as a benchmark to improve the multi-core performance of the open source 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 use of this benchmark, we compare the results for three versions of the software package. These versions correspond to improvements in a general purpose C++ multi-threading memory allocator. The benchmark, and the multi-threaded memory allocator, are distributed with CppAD.

Paper

cppad_thread.pdf