Publication: Cache-Aware and Roofline-Ideal Automatic Differentiation
Introduction
Applications
Tools
Research Groups
Workshops
Publications
   List Publications
   Advanced Search
   Info
   Add Publications
My Account
About

Cache-Aware and Roofline-Ideal Automatic Differentiation

- Proceeding -
 

Area
Reservoir Simulation

Author(s)
Yuxuan Jing , Rami M. Younis

Year
2021

Abstract
Automatic differentiation software libraries augment arithmetic operations with their derivatives, thereby relieving the programmer of deriving, implementing, debugging, and maintaining derivative code. With this encapsulation however, the responsibility of code optimization relies more heavily on the ad system itself (as opposed to the programmer and the compiler). Moreover, given that there are multiple contexts in reservoir simulation software for which derivatives are required (e.g. property package and discrete operator evaluations), the ad infrastructure must also be adaptable. An Operator Overloading ad design is proposed and tested to provide scalability and computational efficiency seemlessly across memory- and compute-bound applications. This is achieved by 1) use of portable and standard programming language constructs (C++17 and OpenMP 4.5 standards), 2) adopting a vectorized programming interface, 3) lazy evaluation via expression templates, and 4) multiple memory alignment and layout policies. Empirical analysis is conducted on various kernels spanning various arithmetic intensity and working set sizes. Cache- aware roofline analysis results show that the performance and scalability attained are reliably ideal. In terms of floapting point operations executed per second, the performance of the ad system matches optimized hand-code. Finally, the implementation is benchmarked using the Automatically Differentiable Expression Templates Library (ADETL).

AD Tools
MXCSL

BibTeX
@PROCEEDINGS{
         Jing2021CAa,
       title = "Cache-Aware and Roofline-Ideal Automatic Differentiation",
       abstract = "Automatic differentiation software libraries augment arithmetic operations with
         their derivatives, thereby relieving the programmer of deriving, implementing, debugging, and
         maintaining derivative code. With this encapsulation however, the responsibility of code
         optimization relies more heavily on the AD system itself (as opposed to the programmer and the
         compiler). Moreover, given that there are multiple contexts in reservoir simulation software for
         which derivatives are required (e.g. property package and discrete operator evaluations), the AD
         infrastructure must also be adaptable. An Operator Overloading AD design is proposed and tested to
         provide scalability and computational efficiency seemlessly across memory- and compute-bound
         applications. This is achieved by 1) use of portable and standard programming language constructs
         (C++17 and OpenMP 4.5 standards), 2) adopting a vectorized programming interface, 3) lazy evaluation
         via expression templates, and 4) multiple memory alignment and layout policies. Empirical analysis
         is conducted on various kernels spanning various arithmetic intensity and working set sizes. Cache-
         aware roofline analysis results show that the performance and scalability attained are reliably
         ideal. In terms of floapting point operations executed per second, the performance of the AD system
         matches optimized hand-code. Finally, the implementation is benchmarked using the Automatically
         Differentiable Expression Templates Library (ADETL).",
       author = "Jing, Yuxuan and Younis, Rami M.",
       volume = "Day 1 Tue, October 26, 2021",
       series = "{SPE} Reservoir Simulation Conference",
       year = "2021",
       doi = "10.2118/203933-MS",
       url = "https://doi.org/10.2118/203933-MS",
       ad_area = "Reservoir Simulation",
       ad_tools = "MXCSL"
}


back
  

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