Projet de recherche doctoral numero :2997

Description

Date depot: 1 janvier 1900
Titre: Exploitation de matériel spécialisé (GPU) dans un contexte multi-modèle de programmation (MPI OpenMP) pour supercalculateur hybride
Directeur de thèse: Albert COHEN (Google)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Non defini

Resumé: {{Contexte}} Dans le domaine du calcul haute-performance, les supercalculateurs évoluent en intégrant à présent du matériel spécialisé (type GPU). En effet, chaque nœud de calcul peut posséder une ou plusieurs ressources supplémentaires sous la forme d’unités de calcul déportées extrêmement performantes. Par exemple, la nouvelle machine de puissance du CCRT Titane est un cluster composé de processeurs Nehalem Intel et de GPUs Tesla Nvidia. Mais leur exploitation n’est pas triviale et nécessite, dans le contexte du calcul scientifique, une utilisation fine de toutes les ressources disponibles dans un environnement multi-modèles de programmation. Ainsi, l’utilisation exclusive de ce matériel spécialisé n’est pas actuellement viable pour de larges applications scientifiques, motivant alors le développement d’une plateforme permettant l’intégration de ceux-ci dans d’autres modèles de programmation type mémoire distribuée (MPI) et mémoire partagée (OpenMP). Plusieurs solutions sont déjà proposées pour tenter de répondre à ce problème. StarPU[3] est une bibliothèque développée au LABRI (Univ. Bordeaux I) permettant de gérer l’ordonnancement d’accès aux GPUs grâce à des connaissances sémantiques de l’application. Ainsi, le runtime peut décider d’exécuter tout ou une partie du travail à déporter sur GPU. Il existe également des travaux plus en amont, proposant un langage ou une extension d’un langage existant afin de faciliter la gestion, au niveau source, des accès aux GPUs. HMPP[4] est un outil développé par CAPS Entreprise proposant un langage à base de directives pour gérer automatiquement le déport de données et le lancement de code sur GPU. Une approche similaire est Cetus[5] : un compilateur développé à l’Université de Purdue permettant de transformer une application OpenMP en code s’exécutant sur CPUs et/ou GPU. Ces approches ne proposent pas une représentation unifiée des modèles de programmation pour processeurs généralistes et processeurs spécialisés. De plus, elles ne proposent pas forcément la généralisation au parallélisme inter-nœud disponible sur un cluster hybride de type CPUs/GPUs. {{Objectif de la thèse}} Le but de cette thèse est de concevoir et d’implémenter des méthodes permettant de gérer l’accès à des matériels spécialisés de manière efficace et performante dans une application scientifique utilisant différents modèles de programmation parallèle s’exécutant sur un supercalculateur hybride de type cluster de CPUs/GPUs. Cette thèse s’appuiera sur le support exécutif open-source MPC [1,2] développé au sein du CEA/DAM Ile-de-France, unifiant déjà les modèles de programmation parallèle MPI, Pthread et OpenMP, ainsi que sur sa chaîne de compilation basée sur le compilateur GNU GCC. {{Déroulement de la thèse}} Le plan de travail de cette thèse sera le suivant : après une étude bibliographique sur les solutions existantes ainsi que sur les différentes architectures de matériels spécialisés (GPUs Nvidia et AMD-ATI, Intel Larrabee, Architecture Fermi NVidia, …), la première étape sera de mettre en place un support exécutif afin d’utiliser ces ressources de manière concurrente dans la plateforme MPC. Une simple gestion des accès aux GPUs présents sur le nœud en contexte MPI et/ou OpenMP semble être un premier objectif raisonnable, à la fois en terme de fonctionnalités et de transparence vis-à-vis du développeur. Dans un second temps, il conviendra d’évaluer cette plateforme et de proposer des optimisations. Cette phase sera dirigée par les applications et benchmarks internes permettant une évaluation sur de « vrais » codes scientifiques (solveurs CFD, MHD, transport). Par la suite, plusieurs pistes seront à traiter. Cette plateforme pourra être augmentée grâce à des modèles plus intelligents d’équilibrage de charge et/ou de décisions dynamiques visant une amélioration des performances. De plus, une analyse statique du code à déporter pourrait aider les décisions prises à l’exécution. Le langage CUDA et/ou OpenCL semble être un bon candidat pour ce type d’analyse. Enfin, la partie exposée au développeur peut être améliorée en proposant une API minimale ainsi que, potentiellement, des évolutions du langage pour permettre une meilleure expressivité du calcul déporté. Nous pouvons résumer le plan de travail ainsi : -* 5 mois de bibliographie sur l’architecture et le modèle d’exécution des GPUs (et autres futures architectures Larabee, Fermi, …) ainsi que sur la plateforme MPC et sa gestion des threads. -* 6 mois sur la mise en place d’un support exécutif afin d’utiliser les accélérateurs de manière concurrente dans la plateforme MPC : gestion et ordonnancement des accès aux GPUs présents sur le nœud en contexte MPI et/ou OpenMP. -* 3 mois sur l’évaluation et l’optimisation dirigée par les applications et benchmarks internes. Ces évaluations se feront sur un supercalculateur hybride CPUs/GPUs. -* 6 mois sur l’évolution potentielle vers un modèle dynamique plus intel

Doctorant.e: Vet Jean-Yves