Vous êtes ici : UVSQ RechercheDoctorat

Amélioration du modèle hybride MPI+Threads à travers les applications, les supports d’exécution et les outils d’analyse de performance par Aurele Maheo

Présentée par : Aurèle Maheo Discipline : informatique Laboratoire : PRISM

Résumé :
Afin de répondre aux besoins de plus en plus importants en puissance de calcul de la part des applications numériques, les supercalculateurs ont dû évoluer et sont ainsi de plus en plus compliqués à programmer. Ainsi, en plus de l'apparition des systèmes à mémoire partagée, des architectures dites NUMA (Non Uniform Memory Access) sont présentes au sein de ces machines, fournissant plusieurs niveaux de parallélisme. Une autre contrainte, la diminution de la mémoire disponible par cœur de calcul, doit être soulignée. C'est ainsi que des modèles parallèles tels que MPI (Message Passing Interface) ne permettent plus aux codes scientifiques haute performance de passer à l'échelle et d'exploiter efficacement les machines de calcul, et doivent donc être combinés avec d'autres modèles plus adaptés aux architectures à mémoire partagée. OpenMP, en tant que modèle standardisé, est un choix privilégié pour être combiné avec MPI. Mais mélanger deux modèles avec des paradigmes différents est une tâche compliquée et peut engendrer des goulets d'étranglement qui doivent être identifiés. Cette thèse a pour objectif d'aborder ces limitations et met en avant plusieurs contributions couvrant divers aspects. Notre première contribution permet de réduire le surcoût des supports exécutifs OpenMP en optimisant le travail d'activation et de synchronisation des threads OpenMP pour les codes MPI+OpenMP. Dans un second temps, nous nous focalisons sur les opérations collectives MPI. Notre contribution a pour but d'optimiser l'opération MPI_Allreduce en réutilisant des unités de calcul inoccupées, et faisant intervenir des threads OpenMP. Nous introduisons également le concept de collectives unifiées, faisant intervenir des tâches MPI et des threads OpenMP dans une même opération. Enfin, nous nous intéressons à l'analyse de performance et plus précisément l'instrumentation des applications MPI+OpenMP, et notre dernière contribution consiste en l'implémentation et l'évaluation de l'outil OpenMP Tools API (OMPT) dans le support exécutif OpenMP du framework MPC. Cet outil nous permet d'instrumenter des constructions OpenMP et de conduire une analyse axée aussi bien du côté des applications que des supports d'exécution.

Abstract :
To provide increasing computational power for numerical simulations, supercomputers evolved and are now more and more complex to program. Indeed, after the appearance of shared memory systems emerged architectures such as NUMA (Non Uniform Memory Access) systems, providing several levels of parallelism. Another constraint, the decreasing amount of memory per compute core, has to be mentioned. Therefore, parallel models such as Message Passing Interface (MPI) are no more sufficient to enable scalability of High Performance applications, and have to be coupled with another model adapted to shared memory architectures. OpenMP, as a de facto standard, is a good candidate to be mixed with MPI. The principle is to use this model to augment legacy codes already parallelized with MPI. But hybridizing scientific codes is a complex task, bottlenecks exist and need to be identified. This thesis tackles these limitations and proposes different contributions following various aspects. Our first contribution reduces the overhead of the OpenMP layer by optimizing the creation and synchronization of threads for MPI+OpenMP codes. On a second time, we target MPI collective operations. Our contribution consists in proposing a technique to exploit idle cores in order to help the operation, with the example of MPI_Allreduce collective. We also introduce unified Collectives involving both MPI tasks and OpenMP threads. Finally, we focus on performance analysis of hybrid MPI+OpenMP codes, and our last contribution consists in the implementation of OpenMP Tools API (OMPT), an instrumentation tool, inside the OpenMP runtime of MPC framework. This tool allows us to instrument and profile OpenMP constructs and allows the analysis of both runtime and application sides.
Informations complémentaires
Allen MALONY, Professeur des Universités, à l’Université d’Oregon/Département d’Informatique et Science de l’Information - Eugene (Etats-Unis) - Rapporteur
Raymond NAMYST, Professeur des Universités, à l’INRIA/Laboratoire Bordelais de Recherche en Informatique (LaBRI) - UMR 5800 - Bordeaux- Rapporteur
William JALBY, Professeur des Universités, à l’Université de Versailles Saint-Quentin-en-Yvelines/Laboratoire Parallélisme, Réseaux, Système,
Modélisation (PRISM) - Versailles - Directeur de thèse
Patrick CARRIBAULT, Ingénieur de Recherche, au CEA - Bruyères-le-Châtel - Examinateur
Michaël KRAJECKI, Professeur des Universités, à l’Université Reims Champagne-Ardenne/Centre de Recherche en STIC (CReSTIC) - EA 3804 – Reims - Examinateur
Marc PERACHE, Ingénieur de Recherche, au CEA - Bruyères-le-Châtel - Examinateur
Gaël THOMAS, Professeur à Télécom SudParis/Département d’Informatique - Evry - Examinateur
Contact :
dredval service FED :