@misc{14951, author = {Navjot Kukreja and Jan Huckelheim and Michael Lange and Mathias Louboutin and Andrea Walther and Simon Funke and Gerard Gorman}, title = {High-level abstractions for optimal checkpointing in inversion problems}, abstract = {Inversion and PDE-constrained optimization problems often relyon solving the adjoint problem to calculate the gradient of the objectivefunction. This requires storing large amounts of intermediatedata, setting a limit to the largest problem that might be solved witha given amount of memory available. Checkpointing is an approachthat can reduce the amount of memory required by redoing partsof the computation instead of storing intermediate results. TheRevolve checkpointing algorithm offers an optimal schedule thattrades computational cost for smaller memory footprints. By varying the number of checkpoints to be stored in memory, the memory footprint of the resulting algorithm can be adjusted to fit within a large range of target machines. Integrating Revolve into a modern python HPC code and combining it with code generation is not straightforward. We present anAPI that makes checkpointing accessible from a DSL-based code generationenvironment along with some initial performance figures with afocus on seismic-imaging applications.}, year = {2018}, journal = {Bordeaux}, publisher = {ISMP2018}, address = {Bordeaux}, url = {https://ismp2018.sciencesconf.org/}, }