High-level python abstractions for optimal checkpointing in inversion problems

12 Jan 2018  ·  Kukreja Navjot, Hückelheim Jan, Lange Michael, Louboutin Mathias, Walther Andrea, Funke Simon W., Gorman Gerard ·

Inversion and PDE-constrained optimization problems often rely on solving the adjoint problem to calculate the gradient of the objec- tive function. This requires storing large amounts of intermediate data, setting a limit to the largest problem that might be solved with a given amount of memory available. Checkpointing is an approach that can reduce the amount of memory required by redoing parts of the computation instead of storing intermediate results. The Revolve checkpointing algorithm o ers an optimal schedule that trades computational cost for smaller memory footprints. Integrat- ing Revolve into a modern python HPC code and combining it with code generation is not straightforward. We present an API that makes checkpointing accessible from a DSL-based code generation environment along with some initial performance gures with a focus on seismic applications.

PDF Abstract
No code implementations yet. Submit your code now

Categories


Mathematical Software Computational Engineering, Finance, and Science

Datasets


  Add Datasets introduced or used in this paper