Publication: Automatic Differentiation of C++ Codes on Emerging Manycore Architectures with Sacado
Introduction
Applications
Tools
Research Groups
Workshops
Publications
   List Publications
   Advanced Search
   Info
   Add Publications
My Account
About
Impress

Automatic Differentiation of C++ Codes on Emerging Manycore Architectures with Sacado

- Article in a journal -
 

Author(s)
Eric Phipps , Roger Pawlowski , Christian Trott

Published in
ACM Transactions on Mathematical Software

Year
2022

Publisher
Association for Computing Machinery

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.

AD Tools
Sacado

AD Theory and Techniques
Parallelism

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"
}


back
  

Contact:
autodiff.org
Username:
Password:
(lost password)