Skip to main content
U.S. Department of Energy
Office of Scientific and Technical Information

Reverse-Mode Algorithmic Differentiation of an OpenMP-Parallel Compressible Flow Solver

Journal Article · · International Journal of High Performance Computing Applications

y Reverse-mode algorithmic differentiation (AD) is an established method for obtaining adjoint derivatives of computer simulation applications. In computational fluid dynamics (CFD), adjoint derivatives of a cost function output such as drag or lift with respect to design parameters such as surface coordinates or geometry control points are a key ingredient for shape optimization, uncertainty quantification and flow control. The computational cost of CFD applications and their derivatives makes it essential to use high-performance computing hardware efficiently, including multi- and many-core architectures. Nevertheless, OpenMP is not supported in most AD tools, and previously shown methods achieve poor scalability of the derivative code. We present the AD of an OpenMP-parallelized finite volume compressible flow solver for unstructured meshes. Our approach enables us to reuse the parallelization of the original code in the computation of adjoint derivatives. The method works by identifying code segments that can be differentiated in reverse-mode without changing their memory access pattern. The OpenMP parallelization is integrated into the derivative code during the build process in a way that is robust to modifications of the original code and independent of the OpenMP support of the differentiation tool. We show the scalability of our adjoint CFD solver on test cases ranging from thousands to millions of finite volume mesh cells on CPUs with up to 16 threads as well as on an Intel XeonPhi card with 236 threads. We demonstrate that our approach is more practical to implement for production-sized CFD codes and produces more efficient adjoint derivative code than previously shown AD methods.

Research Organization:
Argonne National Laboratory (ANL), Argonne, IL (United States)
Sponsoring Organization:
USDOE Office of Science (SC); USDOE Office of Science - Office of Advanced Scientific Computing Research; European Commission - Community Research and Development Information Service (CORDIS) - Seventh Framework Programme (FP7)
DOE Contract Number:
AC02-06CH11357
OSTI ID:
1510005
Journal Information:
International Journal of High Performance Computing Applications, Vol. 33, Issue 1
Country of Publication:
United States
Language:
English

References (34)

On the performance of discrete adjoint CFD codes using automatic differentiation January 2005
Comparison of Node-Centered and Cell-Centered Unstructured Finite-Volume Discretizations: Viscous Fluxes July 2010
MPI-Parallel Discrete Adjoint OpenFOAM January 2015
Sparse Matrices in MATLAB: Design and Implementation January 1992
A continuous adjoint formulation for the computation of topological and surface sensitivities of ducted flows November 2008
Approximate Riemann solvers, parameter vectors, and difference schemes October 1981
Toward adjoinable MPI May 2009
A class of OpenMP applications involving nested parallelism January 2004
Explicit loop scheduling in OpenMP for parallel automatic differentiation January 2002
Towards High-Performance Optimizations of the Unstructured Open-Source SU2 Suite January 2015
OpenMP: an industry standard API for shared-memory programming January 1998
Developing a scalable hybrid MPI/OpenMP unstructured finite element model March 2015
On the chromatic index of almost all graphs October 1977
Tangent Linear and Adjoint Versions of NASA/GMAO’s Fortran 90 Global Weather Forecast Model January 2006
Continuous Adjoint Method for Unstructured Grids May 2008
Code generation for parallel execution of a class of irregular loops on distributed memory systems
  • No authors listed
  • 2012 SC - International Conference for High Performance Computing, Networking, Storage and Analysis, 2012 International Conference for High Performance Computing, Networking, Storage and Analysis https://doi.org/10.1109/SC.2012.30
November 2012
A graph coloring algorithm for large scale scheduling problems January 1986
Performance analysis of the OP2 framework on many-core architectures March 2011
Adjoining Hybrid Parallel Code September 2012
Hybrid OpenMP/MPI Anisotropic Mesh Smoothing January 2012
Run-time parallelization and scheduling of loops May 1991
Pseudo-timestepping and verification for automatic differentiation derived CFD codes July 2011
Algorithm 755; ADOL-C: a package for the automatic differentiation of algorithms written in C/C++ June 1996
OpenAD/F: A Modular Open-Source Tool for Automatic Differentiation of Fortran Codes July 2008
Automatic parallelization of irregular applications December 2000
Handling tens of thousands of cores with industrial/legacy codes: Approaches, implementation and timings October 2013
Interpretative adjoints for numerical simulation codes using MPI May 2010
An Introduction to the Adjoint Approach to Design December 2000
Bringing together automatic differentiation and OpenMP January 2001
Automated Derivation of the Adjoint of High-Level Transient Finite Element Programs January 2013
The Tapenade automatic differentiation tool: Principles, model, and specification April 2013
Detached-Eddy Simulation January 2009
OpenUH: an optimizing, portable OpenMP compiler January 2007
Realistic Performance Characterization of CFD Applications on Intel Many Integrated Core Architecture April 2015

Similar Records

Parallelizable adjoint stencil computations using transposed forward-mode algorithmic differentiation
Journal Article · 2018 · Optimization Methods and Software · OSTI ID:1477730

Deploy threading in Nalu solver stack
Technical Report · 2018 · OSTI ID:1481562

Symmetric Indefinite Linear Solver Using OpenMP Task on Multicore Architectures
Journal Article · 2018 · IEEE Transactions on Parallel and Distributed Systems · OSTI ID:1565696

Related Subjects