Talk by Navjot Kukreja (Imperial College) on June 28th, 2018

High-level abstractions for checkpointing in PDE-constrained optimisation

Gradient-based methods for PDE-constrained optimization problems often rely on solving a pair of forward and adjoint equations to calculate the gradient. This requires storing large amounts of intermediate data, limiting the largest problem that might be solved with a given amount of memory. 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 offers an optimal schedule that trades computational cost for smaller memory footprints. Integrating Revolve into a modern python HPC code is not straightforward. We present pyrevolve, an API to the Revolve library that makes checkpointing accessible from a code generation environment. The separation of concerns effected by pyrevolve allows arbitrary operators to utilise checkpointing with no coupling. This means that more complex schedules like multi-level checkpointing can be implemented with no change in the PDE solver.

 

The talk will be in Room Turing 2 at 10.30am.