Open Peer Review. Open Publishing. Open Access. Open Discussion. Open Directory. Open Recommendations. Open API. Open Source.
Adjoint Code Design Patterns
Uwe Naumann, Jonathan Hüser
Oct 09, 2017 (modified: Oct 09, 2017)NIPS 2017 Workshop Autodiff Submissionreaders: everyone
Abstract:Adjoint methods have become fundamental ingredients of the scientific computing
toolbox over the past decades. Large-scale parameter sensitivity analysis,
uncertainty quantification and nonlinear optimization as well as modern
approaches to deep learning would otherwise
turn out computationally infeasible. For nontrivial real-world problems the
algorithmic derivation of adjoint numerical simulation programs quickly
becomes a highly complex software engineering task requiring
expertise in software analysis, transformation and optimization. Despite rather
mature software tool support for algorithmic differentiation substantial user
intervention is typically required.
A large number of patterns shared by numerous application codes
results in repeated duplication of development effort. The adjoint code design
patterns discussed in this talk aim to reduce
this problem through improved formalization from the software engineering
TL;DR:We propose design patterns for engineering adjoint code
Keywords:adjoint, design pattern, C++
Enter your feedback below and we'll get back to you as soon as possible.