Seeding and adjoining zero-halo partitioned parallel scientific codes
Résumé
Algorithmic differentiation tools can automate the adjoint transformation of parallel messagepassing codes [23] using the AMPI library. Nevertheless, a non-trivial and manual step afterthe differentiation is the initialisation of the seed and retrieval of the output values from thedifferentiated code.MPK:Ambiguities in seeding occurs in programs where the user isunable to expose the complete program flow to the AD tool (a single entry and single exitpoint).:KPMIn this work, we present the problems and ambiguities associated with seedinitialisation and output retrieval for adjoint transformation of halo and zero-halo partitionedMPI programs.JDM:point out relevance: - no pb with single master paradigms, whenusing brute-force AD - problem when using more advanced SPMD/all-worker models, and/orpartial hand-assembly.:MDJShared-node reduction is an important parallel primitive inthe zero-halo context. We introduce a general framework to eliminate ambiguities in seedingand retrieval for shared-node reduction over +, and∗operators using a conceptual master-worker model. Corollaries from the model show the need for new MPI calls for retrievaland eliminate MPI calls for seed initialisation. Different possible implementations for seed-ing manually assembled adjoints were inferred from the model, namely, (i) partial and (ii)unique seeding. We successfully demonstrate the seeding of the manually assembled adjointfixed-point iteration in a 3dzero-halo partitioned unstructured compressible flow solver. Thedifferent implementations, their merits and demerits are highlighted. Tapenade AD tool was used throughout this work.