Checkpointing Schemes for Adjoint Codes: Application to the Meteorological Model Meso-NH

The adjoint code of a nonlinear computer model calculates gradients along a trajectory that has to be known at integration time. When the storage of the whole trajectory requires too large an amount of memory, the calculation of the adjoint code is split and is done part by part from restart points called checkpoints. Griewank proposed a checkpointing method named Revolve, which provides an optimal logarithmic behavior with respect to time and memory requirement. In this work, some checkpointing schedules are proposed. Some of them correspond to special cases of Revolve. The user's preference is essential to choose between time and memory requirements. This is a key point for adjoint codes of temporal models such as the meteorological model Meso-NH that may be used for weather forecasts. When the computational time is the top priority, a particular checkpointing scheme allows computation of the adjoint code with at most one extra integration of the model. The memory requirement behaves then as the square root of the number of iterations of the model. Checkpointing schemes are tested on adjoint simulations of Meso-NH.