Achieving High Performance on Supercomputers with a Sequential Task-based Programming Model
Obtenir de hautes performances sur les supercalculateurs avec un modèle de programmation par tâches séquentiel
Résumé
The emergence of accelerators as standard computing resources on supercomputers and the subsequent architectural complexity increase revived the need for high-level parallel programming paradigms. Sequential task-based programming model has been shown to efficiently meet this challenge on a single multicore node possibly enhanced with accelerators, which motivated its support in the OpenMP 4.0 standard. In this paper, we show that this paradigm can also be employed to achieve high performance on modern supercomputers composed of multiple such nodes, with extremely limited changes in the user code. To prove this claim, we have extended the StarPU runtime system with an advanced inter-node data management layer that supports this model by posting communications automatically. We illustrate our discussion with the task- based tile Cholesky algorithm that we implemented on top of this new runtime system layer. We show that it allows for very high productivity while achieving a performance competitive with both the pure Message Passing Interface (MPI)-based ScaLAPACK Cholesky reference implemen- tation and the DPLASMA Cholesky code, which implements another (non sequential) task-based programming paradigm.
L’émergence d’accélérateurs comme ressources de calcul standard sur les supercalculateurs et la complexification associée des architectures ressuscite le besoin de paradigmes de programmation de haut niveau. La programmation par tâches séquentielle a montré qu’elle pouvait efficacement répondre à ce besoin sur un seul nœud de calcul multicœur possiblement dotée d’accélérateurs, ce qui a motivé son intégration dans le standard OpenMP 4.0. Dans ce papier, nous montrons que ce paradigme peut également être utilisé pour obtenir de hautes performances sur les supercalculateurs modernes composés de plusieurs de ces nœuds de calcul, tout en limitant à au maximum les changements dans le code utilisateur. Afin de prouver cette affirmation, nous avons ajouté au support d’exécution StarPU une couche avancée de gestion des données inter-nœuds qui supporte ce modèle en émettant automatiquement les communications. Nous illustrons notre discussion avec une factorisation de Cholesky tuilée en tâches que nous avons implémentée sur cette nouvelle couche de support exécutif. Nous montrons que cette méthode permet une grande productivité tout en permettant d’obtenir des performances compétitives tant avec l’implémentation de référence ScaLAPACK de Cholesky, qui est basée purement sur l’Interface de Passage de Message (MPI), qu’avec le code Cholesky de DPLASMA, qui implémente un autre modèle de programmation par tâches (non séquentiel).
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...