Abstract
ABSTRACTAlgorithmic differentiation tools can automate the adjoint transformation of parallel message-passing codes [J. Utke, L. Hascoët, P. Heimbach, C. Hill, P. Hovland, and U. Naumann, Toward Adjoinable MPI, in 2009 IEEE International Symposium on Parallel & Distributed Processing, May, IEEE, 2009, pp. 1–8] using the AMPI library. Nevertheless, a non-trivial and manual step after the differentiation is the initialization of the seed and retrieval of the output values from the differentiated code. Ambiguities in seeding occur in programs where the user is unable to expose the complete program flow with a single entry and single exit point to the AD tool. We present the ambiguities associated with seed initialization and output retrieval for adjoint transformation of halo and zero-halo partitioned MPI programs. We introduce a general framework to eliminate ambiguities in seeding and retrieval for shared-node reduction over +, and * operators using a conceptual master-worker model. The model shows the need for new MPI calls for retrieval and eliminate MPI calls for seed initialization. Different implementations for seeding manually assembled adjoints were inferred from the model, namely, partial and unique seeding. We successfully applied the seeding techniques to a 3D zero-halo partitioned unstructured compressible discrete adjoint solver and highlight the merits and demerits of each strategy.
Highlights
Gradient-based optimisation methods are essential for solving optimisation problems with many control variables
The efficient computation of the required gradients is essential for application of numerical optimisation to large-scale and industrial cases, such as aerodynamic design which is the focus of our work
A discrete adjoint version of the open-source CFD solvers SU2 [1] has been carried out using the CoDiPack Algorithmic differentiation (AD) tool [18] and the Adjoinable Message Passing Interface (MPI) library
Summary
Gradient-based optimisation methods are essential for solving optimisation problems with many control variables. The efficient computation of the required gradients is essential for application of numerical optimisation to large-scale and industrial cases, such as aerodynamic design which is the focus of our work. In the typical case of a small number of output variables, their derivatives with respect to a large number of input variables can be efficiently obtained using the ‘reverse’ mode of AD, which accumulates the derivative by stepping through the code statements in reverse order. Differentiating sequential computer models with AD in reverse mode to obtain adjoint codes is reasonably mature and a range of AD tools have been developed, see www.autodiff.org for various offerings. A major step forward has been made with the development of the AMPI library [21] which, under certain restrictions, allows to automatically derive the required MPI communications for the reverse-differentiated code. We focus on the more versatile message-passing parallelism and restrict our analysis to blocking communication
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have