Inverse problems often rely on solving the adjoint problem to calculate the gradient of the objective 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. 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.

In the first part of this talk, I present the csae for checkpointing and how it is used, with a focus on seismic imaging applications. In the second part, I discuss how lossy compression can be combined with checkpointing to accelerate adjoint-based optimisation problems.