{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,1]],"date-time":"2026-05-01T22:44:52Z","timestamp":1777675492399,"version":"3.51.4"},"reference-count":48,"publisher":"SAGE Publications","issue":"1","license":[{"start":{"date-parts":[[2017,6,29]],"date-time":"2017-06-29T00:00:00Z","timestamp":1498694400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["The International Journal of High Performance Computing Applications"],"published-print":{"date-parts":[[2019,1]]},"abstract":"<jats:p>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.<\/jats:p>","DOI":"10.1177\/1094342017712060","type":"journal-article","created":{"date-parts":[[2017,6,29]],"date-time":"2017-06-29T04:37:58Z","timestamp":1498711078000},"page":"140-154","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":9,"title":["Reverse-mode algorithmic differentiation of an OpenMP-parallel compressible flow solver"],"prefix":"10.1177","volume":"33","author":[{"given":"Jan","family":"H\u00fcckelheim","sequence":"first","affiliation":[{"name":"School of Engineering and Materials Science, Queen Mary University of London, London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Paul","family":"Hovland","sequence":"additional","affiliation":[{"name":"Argonne National Laboratory, Lemont, IL, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Michelle Mills","family":"Strout","sequence":"additional","affiliation":[{"name":"University of Arizona, Tucson, AZ, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jens-Dominik","family":"M\u00fcller","sequence":"additional","affiliation":[{"name":"School of Engineering and Materials Science, Queen Mary University of London, London, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"179","published-online":{"date-parts":[[2017,6,29]]},"reference":[{"key":"bibr1-1094342017712060","volume-title":"Computational Fluid Dynamics: Principles and Applications","author":"Blazek J","year":"2001"},{"key":"bibr2-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/1278480.1278667"},{"key":"bibr3-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/377792.377842"},{"key":"bibr4-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1109\/HPCSA.2002.1019144"},{"key":"bibr5-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/967900.967948"},{"key":"bibr6-1094342017712060","doi-asserted-by":"publisher","DOI":"10.2514\/6.2007-1107"},{"key":"bibr7-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/bxv022"},{"key":"bibr8-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.compfluid.2011.01.039"},{"key":"bibr9-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1109\/99.660313"},{"key":"bibr10-1094342017712060","doi-asserted-by":"publisher","DOI":"10.2514\/1.44940"},{"key":"bibr11-1094342017712060","doi-asserted-by":"publisher","DOI":"10.2514\/6.2015-1949"},{"key":"bibr12-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/0095-8956(77)90039-9"},{"key":"bibr13-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1137\/120873558"},{"key":"bibr14-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-658-07597-2"},{"key":"bibr15-1094342017712060","volume-title":"Toward adjoint OpenMP","author":"F\u00f6rster M","year":"2011"},{"key":"bibr16-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-28438-9_24"},{"key":"bibr17-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1137\/0613024"},{"key":"bibr18-1094342017712060","doi-asserted-by":"publisher","DOI":"10.2514\/6.1997-1850"},{"key":"bibr19-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1023\/A:1011430410075"},{"key":"bibr20-1094342017712060","volume-title":"On the use of Runge-Kutta time-marching and multigrid for the solution of steady adjoint equations","author":"Giles MB","year":"2000"},{"key":"bibr21-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4613-0075-5_16"},{"key":"bibr22-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/1964218.1964221"},{"key":"bibr23-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2012.04.166"},{"key":"bibr24-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/229473.229474"},{"key":"bibr25-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.compfluid.2014.09.007"},{"key":"bibr26-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-8191(00)00052-1"},{"key":"bibr27-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/2450153.2450158"},{"key":"bibr28-1094342017712060","unstructured":"Hovland PD (1997) Automatic differentiation of parallel programs. PhD Thesis, University of Illinois at Urbana-Champaign. Champaign, IL, USA."},{"key":"bibr29-1094342017712060","doi-asserted-by":"publisher","DOI":"10.2514\/1.25362"},{"key":"bibr30-1094342017712060","unstructured":"Krakos JA (2012) Unsteady adjoint analysis for output sensitivity and mesh adaptation. PhD Thesis, Massachusetts Institute of Technology."},{"key":"bibr31-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.1174"},{"key":"bibr32-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.compfluid.2012.09.030"},{"key":"bibr33-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/0305-0548(86)90061-4"},{"key":"bibr34-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1002\/fld.885"},{"key":"bibr35-1094342017712060","volume-title":"The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation","volume":"24","author":"Naumann U","year":"2012"},{"key":"bibr36-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-87475-1_44"},{"key":"bibr37-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1002\/fld.1770"},{"key":"bibr38-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1109\/SC.2012.30"},{"key":"bibr39-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(81)90128-5"},{"key":"bibr40-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1109\/12.88484"},{"key":"bibr41-1094342017712060","doi-asserted-by":"publisher","DOI":"10.4203\/ccp.100.7"},{"key":"bibr42-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2010.04.204"},{"key":"bibr43-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-40047-6_56"},{"key":"bibr44-1094342017712060","volume-title":"30th aerospace sciences meeting and exhibit. American institute of aeronautics and astronautics","author":"Spalart P","year":"1992"},{"key":"bibr45-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1146\/annurev.fluid.010908.165130"},{"key":"bibr46-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2015.05.181"},{"key":"bibr47-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2009.5161165"},{"key":"bibr48-1094342017712060","doi-asserted-by":"publisher","DOI":"10.1145\/1377596.1377598"}],"container-title":["The International Journal of High Performance Computing Applications"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342017712060","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.1177\/1094342017712060","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342017712060","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T08:15:39Z","timestamp":1777450539000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.1177\/1094342017712060"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,6,29]]},"references-count":48,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2019,1]]}},"alternative-id":["10.1177\/1094342017712060"],"URL":"https:\/\/doi.org\/10.1177\/1094342017712060","relation":{},"ISSN":["1094-3420","1741-2846"],"issn-type":[{"value":"1094-3420","type":"print"},{"value":"1741-2846","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,6,29]]}}}