High-level python abstractions for optimal checkpointing in inversion
problems
problems
File(s)1802.02474v1.pdf (1.48 MB)
Working paper
Author(s)
Type
Working Paper
Abstract
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.
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.
Date Issued
2018-01-12
Citation
2018
Identifier
http://arxiv.org/abs/1802.02474v1
Subjects
cs.MS
cs.MS
cs.CE