Optimal Checkpointing for Time-Stepping Procedures in ADOL-C
Using the basic reverse mode of automatic differentiation, the memory needed for the computation of discrete adjoints is proportional to the number of operations performed. This behavior is frequently not acceptable, especially for large-scale problems that involve a kind of time-stepping procedure. Therefore, we integrate a checkpointing mechanism into ADOL-C, a tool for the automatic differentiation of C and C++ programs. This checkpointing procedure is optimal for a given number of checkpoints in the sense that it yields the minimal number of recomputations. The resulting effects on the run-time behavior are illustrated by means of the derivative computation for an ODE-based optimization problem.
KeywordsOperation Count Derivative Computation Adjoint Code Checkpointing Strategy Checkpoint Size
- 8.Hascoët, L., Pascual, V.: Tapenade 2.1 user’s guide. Tech. rep. 300, INRIA (2004)Google Scholar
- 11.Naumann, U., Utke, J., Lyons, A., Fagan, M.: Control Flow Reversal for Adjoint Code Generation. In: Proceed. of SCAM 2004, pp. 55–64. IEEE Computer Society, Los Alamitos (2004)Google Scholar
- 12.Walther, A., Griewank, A.: Advantages of binomial checkpointing for memory-reduced adjoint calculations. In: Feistauer, M., et al. (eds.) Numerical mathematics and advanced applications, Proc. ENUMATH 2003, pp. 834–843. Springer, Heidelberg (2004)Google Scholar