On the correct application of AD checkpointing to adjoint MPI-parallel programs
Sur l'application correcte de checkpointing de la DA aux programmes parallèles MPI adjoints
Résumé
Checkpointing is a classical technique to mitigate the overhead of adjoint Algorithmic Differentiation (AD). In the context of source transformation AD with the Store-All approach, checkpointing reduces the peak memory consumption of the adjoint, at the cost of duplicate runs of selected pieces of the code. Checkpointing is vital for long run-time codes, which is the case of most MPI parallel applications. However, the presence of MPI communications seriously restricts application of checkpointing. In most attempts to apply checkpointing to adjoint MPI codes (the ``popular'' approach), a number of restrictions apply on the form of communications that occur in the checkpointed piece of code. In many works, these restrictions are not explicit, and an application that does not respect these restrictions may produce erroneous code. We propose techniques to apply checkpointing to adjoint MPI codes, that either do not suppose these restrictions, or explicit them so that the end users can verify their applicability. These techniques rely on both adapting the snapshot mechanism of checkpointing and on modifying the behavior of communication calls. One technique is based on logging the values received, so that the duplicated communications need not take place.Although this technique completely lifts restrictions on checkpointing MPI codes, message logging makes it more costly than the popular approach. However, we can refine this technique to blend message logging and communications duplication whenever it is possible, so that the refined technique now encompasses the popular approach.We provide elements of proof of correction of our refined technique, i.e. that it preserves the semantics of the adjoint code and that it doesn't introduce deadlocks.
Le ``Checkpointing'' est une technique classique pour atténuer le surcoût de la différentiation algorithmique adjointe (DA). Dans le contexte de la DA par transformation de source avec l'approche Store-All, le checkpointing réduit le pic de consommation de mémoire de l'adjoint au prix d'exécutions dupliquées de morceaux de code sélectionnés. Le checkpointing est vital pour les codes de temps d'exécution long, ce qui est le cas de la plupart des applications parallèles MPI. Cependant, la présence des communications MPI restreint sérieusement l'application du checkpointing. Dans la plupart des tentatives pour appliquer le checkpointing aux codes MPI adjoints (l'approche ``populaire''), certaines restrictions s'appliquent sur la forme des communications qui ont lieu dans le morceau de code apres le checkpointing. Dans plusieurs travaux, ces restrictions ne sont pas explicites, et une application qui ne respecte pas ces restrictions peut produire des résultats erronés. Nous proposons des techniques pour appliquer le checkpointing aux codes MPI adjoints, qui ou bien ne supposent pas ces restrictions, ou bien les explicitent de telle façon que les utilisateurs finaux peuvent vérifier leur applicabilité. Ces techniques utilisent à la fois l'adaptation des mécanismes de snapshot de checkpoining et sur la modification de comportement des appels de communications. Une technique est fondée sur l'enregistrement des valeurs reçues, de telle façon que les communications n'ont pas besoin d'être répétées. Malgré que cette technique lève complètement les restrictions sur le checkpointing des codes MPI, l'enregistrement des messages la rend plus coûteuse que l'approche populaire. Cependant, nous pouvons raffiner cette technique pour remplacer l'enregistrement des valeurs par la duplication des communications à chaque fois que c'est possible, de telle façon que la technique raffinée englobe maintenant l'approche populaire. Nous fournissons des éléments de preuve de correction de notre technique raffinée, à savoir qu'elle préserve la sémantique du code adjoint et qu'elle n'introduit pas de deadlock.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...