Enabling User-Driven Checkpointing Strategies in Reverse-Mode Automatic Differentiation

More Info
expand_more

Abstract

This paper presents a new functionality of the Automatic Differentiation (AD) Tool Tapenade. Tapenade generates adjoint codes which are widely used for optimization in CFD. Unfortunately, for large applications the adjoint code demands a great deal of memory, because it needs to store a large set of intermediates values. To cope with that problem, Tapenade implements a sub-optimal version of a technique called checkpointing, which is a trade-off between store and re-computation. Our long-term goal is to provide an optimal checkpointing strategy for every code, not yet achieved by any AD tool. Towards that goal, we first introduce modifications in Tapenade in order to give the user the choice to select the checkpointing strategy most suitable for their code. Second, we conduct experiments in real-size scientific codes in order to gather hints that help us to deduce an optimal checkpointing strategy. Some of the experimental results show memory savings up to 35% and execution time up to 90%.

Files