BibTeX
@ARTICLE{
Phipps2022ADo,
author = "Phipps, Eric and Pawlowski, Roger and Trott, Christian",
title = "Automatic Differentiation of {C++} Codes on Emerging Manycore Architectures with
{S}acado",
year = "2022",
issue_date = "December 2022",
publisher = "Association for Computing Machinery",
address = "New York, NY, USA",
volume = "48",
number = "4",
issn = "0098-3500",
url = "https://doi.org/10.1145/3560262",
doi = "10.1145/3560262",
abstract = "Automatic differentiation (AD) is a well-known technique for evaluating analytic
derivatives of calculations implemented on a computer, with numerous software tools available for
incorporating AD technology into complex applications. However, a growing challenge for AD is the
efficient differentiation of parallel computations implemented on emerging manycore computing
architectures such as multicore CPUs, GPUs, and accelerators as these devices become more pervasive.
In this work, we explore forward mode, operator overloading-based differentiation of C++ codes on
these architectures using the widely available Sacado AD software package. In particular, we
leverage Kokkos, a C++ tool providing APIs for implementing parallel computations that is portable
to a wide variety of emerging architectures. We describe the challenges that arise when
differentiating code for these architectures using Kokkos, and two approaches for overcoming them
that ensure optimal memory access patterns as well as expose additional dimensions of fine-grained
parallelism in the derivative calculation. We describe the results of several computational
experiments that demonstrate the performance of the approach on a few contemporary CPU and GPU
architectures. We then conclude with applications of these techniques to the simulation of
discretized systems of partial differential equations.",
journal = "ACM Transactions on Mathematical Software",
month = "dec",
articleno = "43",
numpages = "29",
keywords = "Automatic differentiation, multicore, manycore, GPU, threads, CUDA, OpenMP",
ad_tools = "Sacado",
ad_theotech = "Parallelism"
}
|