Adjoint Checkpointing using Custom Differentiation Rules
Michel Schanen
Checkpointing algorithms provide a trade-off between recomputation and storage.
We present the package Checkpointing.jl that leverages Enzyme and expression transformations in the programming language Julia together with the package ChainRules.jl to transform loop iterations into
a checkpointed differentiated loop. The user may choose between various checkpointing algorithm schemes and storage devices. We describe the unique design of Checkpointing.jl and demonstrate its features on an automatically differentiated MPI implementation of Burgers' equation.