Articles | Volume 9, issue 5
https://doi.org/10.5194/gmd-9-1891-2016
https://doi.org/10.5194/gmd-9-1891-2016
Model description paper
 | 
20 May 2016
Model description paper |  | 20 May 2016

An optimized treatment for algorithmic differentiation of an important glaciological fixed-point problem

Daniel N. Goldberg, Sri Hari Krishna Narayanan, Laurent Hascoet, and Jean Utke

Abstract. We apply an optimized method to the adjoint generation of a time-evolving land ice model through algorithmic differentiation (AD). The optimization involves a special treatment of the fixed-point iteration required to solve the nonlinear stress balance, which differs from a straightforward application of AD software, and leads to smaller memory requirements and in some cases shorter computation times of the adjoint. The optimization is done via implementation of the algorithm of Christianson (1994) for reverse accumulation of fixed-point problems, with the AD tool OpenAD. For test problems, the optimized adjoint is shown to have far lower memory requirements, potentially enabling larger problem sizes on memory-limited machines. In the case of the land ice model, implementation of the algorithm allows further optimization by having the adjoint model solve a sequence of linear systems with identical (as opposed to varying) matrices, greatly improving performance. The methods introduced here will be of value to other efforts applying AD tools to ice models, particularly ones which solve a hybrid shallow ice/shallow shelf approximation to the Stokes equations.

Download
Short summary
Geophysical adjoint models are powerful tools, allowing sensitivity studies that are not possible otherwise, and enabling optimized fit of models to observing data sets. The complexity involved requires the use of algorithmic differentiation (AD) software, but AD adjoint calculation for ice models can be slow, with prohibitive memory requirements. In this paper, we present a method to improve the performance of ice model adjoint generation, in terms of timing, memory load, and accuracy.