Dynamic Placement of Progress Thread for Overlapping MPI Non-Blocking Collectives on Manycore Processor
Recouvrement des collectives mpi non-bloquantes sur processeur manycore
Résumé
To amortize the cost of MPI collective operations, non-blocking
collectives have been proposed so as to allow communications to be
overlapped with computation. Unfortunately, collective communications
are more CPU-hungry than point-to-point communications and running
them in a communication thread on a dedicated CPU core makes them
slow. On the other hand, running collective communications on the
application cores leads to no overlap.
To address these issues, we propose an algorithm for tree-based
collective operations that splits the tree between communication
cores and application cores. To get the best of both worlds, the
algorithm runs the short but heavy part of the tree on application
cores, and the long but narrow part of the tree on one or several
communication cores, so as to get a trade-off between overlap and
absolute performance. We provide a model to study and predict its
behavior and to tune its parameters.
We implemented it in the MPC framework, which is a thread-based MPI
implementation. We have run benchmarks on manycore processors such
as the KNL and Skylake and get good results for both performance and
overlap.
Les collectives MPI non-bloquantes ont été proposées pour recouvrir les communications
par du calcul afin d'en amortir le coût. Cependant, ces opérations consomment plus
de temps CPU que les opérations point-à-point. L'utilisation d'un seul CPU dédié aux threads
de progression n'est donc pas efficace et rend les communications lentes. D'un autre côté, si les
communications sont exécutées sur les coeurs applicatifs, aucun recouvrement n'est obtenu. Pour
aborder ce problème, nous proposons un algorithme pour les opérations collectives en arbre qui
scinde l'arbre des communications entre les coeurs applicatifs et les coeurs dédiés aux communications
afin d'obtenir un compromis entre le taux de recouvrement et les performances globales.
Nous proposons un modèle afin d'étudier et prédire son comportement puis l'avons implémenté
dans le framework MPC. Nous avons obtenu de bons résultats en testant notre approche sur des
processeurs manycores tels que le KNL.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...