Efficient Expression Templates for Operator Overloading-Based Automatic Differentiation
From MaRDI portal
Publication:2913148
Abstract: Expression templates are a well-known set of techniques for improving the efficiency of operator overloading-based forward mode automatic differentiation schemes in the C++ programming language by translating the differentiation from individual operators to whole expressions. However standard expression template approaches result in a large amount of duplicate computation, particularly for large expression trees, degrading their performance. In this paper we describe several techniques for improving the efficiency of expression templates and their implementation in the automatic differentiation package Sacado. We demonstrate their improved efficiency through test functions as well as their application to differentiation of a large-scale fluid dynamics simulation code.
Recommendations
- Fast reverse-mode automatic differentiation using expression templates in C++
- scientific article; zbMATH DE number 992812
- Automatic differentiation in C++ using expression templates and application to a flow control problem
- ADOL-C: automatic differentiation using operator overloading in C++
- Automatic differentiation for solving nonlinear partial differential equations: an efficient operator overloading approach
- scientific article; zbMATH DE number 5353267
- Expression templates for primal value taping in the reverse mode of algorithmic differentiation
- Efficient syntax-driven lumping of differential equations
- A simply typed \(\lambda\)-calculus of forward automatic differentiation
Cited in
(20)- Code-verification techniques for hypersonic reacting flows in thermochemical nonequilibrium
- Dimensional reduction of nonlinear finite element dynamic models with finite rotations and energy-based mesh sampling and weighting for computational efficiency
- Scalable implicit incompressible resistive MHD with stabilized FE and fully-coupled Newton-Krylov-AMG
- Dual numbers and automatic differentiation to efficiently compute velocities and accelerations
- AutoMat: automatic differentiation for generalized standard materials on GPUs
- Fast reverse-mode automatic differentiation using expression templates in C++
- Automatic differentiation of C++ codes on emerging manycore architectures with Sacado
- Interval arithmetic using expression templates, template meta programming and the upcoming C++ standard
- Expression templates for partial differential equations
- Towards an automatic uncertainty compiler
- Calibration of elastoplastic constitutive model parameters from full‐field data with automatic differentiation‐based sensitivities
- Sacado
- Generative programming for automatic differentiation
- A backward automatic differentiation framework for reservoir simulation
- The \textsc{deal.II} finite element library: design, features, and insights
- I'm stuck! How to efficiently debug computational solid mechanics models so you can enjoy the beauty of simulations
- Three-dimensional isogeometric solutions to general boundary value problems of Toupin's gradient elasticity theory at finite strains
- PyAlbany: a Python interface to the C++ multiphysics solver Albany
- Simulation of finite-strain inelastic phenomena governed by creep and plasticity
- Automatic differentiation in C++ using expression templates and application to a flow control problem
This page was built for publication: Efficient Expression Templates for Operator Overloading-Based Automatic Differentiation
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q2913148)