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

Read more

Summary

Introduction

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

Background
Seeding the differentiated code
Code example
Halo Approach
Zero-halo Approach
CMW adjoint seeding algorithm for shared-node reduction
Case study
MPI Fixed point loop
Parallel FPI seeding
Summary and Future Work
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call