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
perspective.
TL;DR: We propose design patterns for engineering adjoint code
Keywords: adjoint, design pattern, C++
4 Replies
Loading