1. Automatic Differentiation of C++ Codes on Emerging Manycore Architectures with Sacado.
- Author
-
Phipps, Eric, Pawlowski, Roger, and Trott, Christian
- Subjects
- *
AUTOMATIC differentiation , *C++ , *PARTIAL differential equations , *SOFTWARE development tools , *INTEGRATED software - 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. [ABSTRACT FROM AUTHOR]
- Published
- 2022
- Full Text
- View/download PDF