{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:13:14Z","timestamp":1750219994569,"version":"3.41.0"},"reference-count":40,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2023,3,21]],"date-time":"2023-03-21T00:00:00Z","timestamp":1679356800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Math. Softw."],"published-print":{"date-parts":[[2023,3,31]]},"abstract":"<jats:p>We present the new software OpDiLib, a universal add-on for classical operator overloading AD tools that enables the automatic differentiation (AD) of OpenMP parallelized code. With it, we establish support for OpenMP features in a reverse mode operator overloading AD tool to an extent that was previously only reported on in source transformation tools. We achieve this with an event-based implementation ansatz that is unprecedented in AD. Combined with modern OpenMP features around OMPT, we demonstrate how it can be used to achieve differentiation without any additional modifications of the source code; neither do we impose a priori restrictions on the data access patterns, which makes OpDiLib highly applicable. For further performance optimizations, restrictions like atomic updates on adjoint variables can be lifted in a fine-grained manner. OpDiLib can also be applied in a semi-automatic fashion via a macro interface, which supports compilers that do not implement OMPT. We demonstrate the applicability of OpDiLib for a pure operator overloading approach in a hybrid parallel environment. We quantify the cost of atomic updates on adjoint variables and showcase the speedup and scaling that can be achieved with the different configurations of OpDiLib in both the forward and the reverse pass.<\/jats:p>","DOI":"10.1145\/3570159","type":"journal-article","created":{"date-parts":[[2022,11,17]],"date-time":"2022-11-17T15:12:13Z","timestamp":1668697933000},"page":"1-31","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Event-Based Automatic Differentiation of OpenMP with OpDiLib"],"prefix":"10.1145","volume":"49","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3840-6941","authenticated-orcid":false,"given":"Johannes","family":"Bl\u00fchdorn","sequence":"first","affiliation":[{"name":"Chair for Scientific Computing, Technische Universit\u00e4t Kaiserslautern, Kaiserslautern, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9038-3428","authenticated-orcid":false,"given":"Max","family":"Sagebaum","sequence":"additional","affiliation":[{"name":"Chair for Scientific Computing, Technische Universit\u00e4t Kaiserslautern, Kaiserslautern, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5863-7384","authenticated-orcid":false,"given":"Nicolas","family":"Gauger","sequence":"additional","affiliation":[{"name":"Chair for Scientific Computing, Technische Universit\u00e4t Kaiserslautern, Kaiserslautern, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2023,3,21]]},"reference":[{"key":"e_1_3_2_2_1","doi-asserted-by":"publisher","DOI":"10.1080\/17415977.2016.1273916"},{"key":"e_1_3_2_3_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0096-3003(02)00091-7"},{"issue":"153","key":"e_1_3_2_4_1","first-page":"1","article-title":"Automatic differentiation in machine learning: A survey","volume":"18","author":"Baydin At\u0131l\u0131m G\u00fcnes","year":"2017","unstructured":"At\u0131l\u0131m G\u00fcnes Baydin, Barak A. Pearlmutter, Alexey Andreyevich Radul, and Jeffrey Mark Siskind. 2017. Automatic differentiation in machine learning: A survey. J. Mach. Learn. Res. 18, 153(2017), 1\u201343. Retrieved from https:\/\/jmlr.org\/papers\/v18\/17-468.html.","journal-title":"J. Mach. Learn. Res."},{"key":"e_1_3_2_5_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.mcm.2008.12.006"},{"key":"e_1_3_2_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-68942-3_15"},{"key":"e_1_3_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/377792.377842"},{"key":"e_1_3_2_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCSA.2002.1019144"},{"key":"e_1_3_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/967900.967948"},{"key":"e_1_3_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-40698-0_13"},{"key":"e_1_3_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-658-07597-2"},{"key":"e_1_3_2_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-28438-9_24"},{"key":"e_1_3_2_13_1","doi-asserted-by":"publisher","DOI":"10.1137\/1.9780898717761"},{"key":"e_1_3_2_14_1","doi-asserted-by":"publisher","DOI":"10.1137\/19M1247620"},{"key":"e_1_3_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2450153.2450158"},{"key":"e_1_3_2_16_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-46080-2_107"},{"key":"e_1_3_2_17_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.future.2004.11.010"},{"key":"e_1_3_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2560359"},{"key":"e_1_3_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3472796"},{"key":"e_1_3_2_20_1","doi-asserted-by":"publisher","DOI":"10.1177\/1094342017712060"},{"key":"e_1_3_2_21_1","doi-asserted-by":"publisher","DOI":"10.1137\/1.9781611976489.11"},{"key":"e_1_3_2_22_1","volume-title":"Advanced Concepts for Automatic Differentiation Based on Operator Overloading","author":"Kowarz Andreas","year":"2008","unstructured":"Andreas Kowarz. 2008. Advanced Concepts for Automatic Differentiation Based on Operator Overloading. Ph.D. Dissertation. Techn. Univ. Dresden, Dresden, Germany. Retrieved from https:\/\/nbn-resolving.org\/urn:nbn:de:bsz:14-ds-1206719130404-22306."},{"key":"e_1_3_2_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-27279-5_21"},{"key":"e_1_3_2_24_1","unstructured":"OpenMP Architecture Review Board. 2005. OpenMP Application Program Interface Version 2.5. (May2005). Retrieved from https:\/\/www.openmp.org\/wp-content\/uploads\/spec25.pdf."},{"key":"e_1_3_2_25_1","unstructured":"OpenMP Architecture Review Board. 2013. OpenMP Application Program Interface Version 4.0. (July2013). Retrieved from https:\/\/www.openmp.org\/wp-content\/uploads\/OpenMP4.0.0.pdf."},{"key":"e_1_3_2_26_1","unstructured":"OpenMP Architecture Review Board. 2018. OpenMP Application Programming Interface Version 5.0. (November2018). Retrieved from https:\/\/www.openmp.org\/wp-content\/uploads\/OpenMP-API-Specification-5.0.pdf."},{"key":"e_1_3_2_27_1","unstructured":"OpenMP Architecture Review Board. 2021. OpenMP Application Programming Interface Version 5.2. (November2021). Retrieved from https:\/\/www.openmp.org\/wp-content\/uploads\/OpenMP-API-Specification-5-2.pdf."},{"key":"e_1_3_2_28_1","doi-asserted-by":"publisher","DOI":"10.1002\/gamm.201010011"},{"key":"e_1_3_2_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-11987-4_5"},{"key":"e_1_3_2_30_1","doi-asserted-by":"publisher","DOI":"10.1080\/10556788.2018.1471140"},{"key":"e_1_3_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3356900"},{"key":"e_1_3_2_32_1","unstructured":"Max Sagebaum Johannes Bl\u00fchdorn and Nicolas R. Gauger. 2020. Index Handling and Assign Optimization for Algorithmic Differentiation Reuse Index Managers. (2020). arXiv:2006.12992. Retrieved from https:\/\/arxiv.org\/abs\/2006.12992."},{"key":"e_1_3_2_33_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2013.05.184"},{"key":"e_1_3_2_34_1","doi-asserted-by":"publisher","DOI":"10.4203\/ccp.100.7"},{"key":"e_1_3_2_35_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2010.04.204"},{"key":"e_1_3_2_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-79409-7_36"},{"key":"e_1_3_2_37_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.procs.2013.05.206"},{"key":"e_1_3_2_38_1","doi-asserted-by":"publisher","DOI":"10.3390\/ijtpp2020010"},{"key":"e_1_3_2_39_1","doi-asserted-by":"publisher","DOI":"10.2514\/1.B37685"},{"key":"e_1_3_2_40_1","volume-title":"Combinatorial Scientific Computing.","author":"Walther Andrea","year":"2009","unstructured":"Andrea Walther. 2009. Getting started with ADOL-C. In Combinatorial Scientific Computing.Uwe Naumann, Olaf Schenk, Horst D. Simon, and Sivan Toledo (Eds.), Vol. 9061, Schloss Dagstuhl \u2013 Leibniz-Zentrum f\u00fcr Informatik, Dagstuhl, Germany, 10. Retrieved from https:\/\/drops.dagstuhl.de\/opus\/volltexte\/2009\/2084."},{"key":"e_1_3_2_41_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.camwa.2010.05.031"}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3570159","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3570159","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T17:49:37Z","timestamp":1750182577000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3570159"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,3,21]]},"references-count":40,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2023,3,31]]}},"alternative-id":["10.1145\/3570159"],"URL":"https:\/\/doi.org\/10.1145\/3570159","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2023,3,21]]},"assertion":[{"value":"2021-09-28","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-10-22","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-03-21","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}