Responsables :
Alexandre Denis (Inria), Samuel Thibault (Université de Bordeaux), en collaboration avec Philippe Swartvagher (ENSEIRB-MATMEMCA)
Téléphone :
05.24.57.41.14
Courriels :
Alexandre.Denis@inria.fr
Samuel.Thibault@inria.fr
Dans le cadre du calcul haute-performance, les machines sont désormais très hétérogènes, équipées d'accélérateurs tels que les GPU ou les FPGA. Ces différentes unités se programment avec des paradigmes différents, et pour ajouter à la complexité, il faut gérer les transferts de données entre les unités, l'ordonnancement, et l'équilibrage de charge. Pour tirer profit d'une telle plate-forme, l'équipe STORM a proposé le support d'exécution StarPU qui gère ces problématiques de manière générique et indépendante de l'application. Pour des grappes de calcul — plusieurs noeuds interconnectés par un réseau d'interconnexion — StarPU confie l'exploitation du réseau à une bibliothèque de communication qui implémente l'interface MPI, d'utilisation standard en HPC.
Par ailleurs, l'équipe TADAAM développe la bibliothèque de communication NewMadeleine, dont l'originalité est d'appliquer une stratégie d'optimisation à la volée sur les flux de communications issus des différents threads, en assurant une progression asynchrone en tâche de fond. Elle repose essentiellement sur le principe de messages actifs, ce qui permet le déroulement des communications sans intervention de l'application.
Les besoins de StarPU en terme de communications ne sont pas les mêmes que ceux d'une application MPI classique, notamment en matière d'irrégularité, de réactivité, de multi-threading, de nombre de requêtes actives simultanément, alors qu'ils correspondent parfaitement au cahier des charges et aux capacités de NewMadeleine. Un portage se StarPU sur l'interface native de NewMadeleine a été réalisé pour en exploiter au mieux les propriétés de progression et de passage à l'échelle.
Ce stage vise à renforcer le dialogue entre NewMadeleine et StarPU dans la gestion des communications. Il s'agit d'exploiter la connaissance du futur que l'on peut extraire du graphe de tâches de façon à optimiser les communications. En effet, pour gérer la réception des données, deux stratégies sont possibles : allouer tous les buffers à l'initialisation ou les allouer au fur et à mesure que les données sont prêtes. La première solution est particulièrement gourmande en mémoire. La deuxième peut retarder la réception des données ; en effet, sur les réseaux haute performance, un buffer n'est pas prêt à recevoir les données immédiatement après son allocation. Il y a au préalable une phase d'enregistrement mémoire qui prépare la mémoire à une utilisation directement par la carte réseau sans passer par l'OS, et qui est coûteuse en temps.
L'objectif est de proposer une troisième voie : allouer dynamiquement les buffers de réception, mais en avance, de façon à avoir le temps de gérer l'enregistrement. Grâce au graphe de tâche de StarPU, il est possible de connaître l'avenir avec suffisament de précision pour savoir quels seront les buffers dont on aura prochainement besoin.
L'objectif de ce stage est d'étudier cette problématique, de proposer et d'implémenter des nouveaux mécanismes dans les bibliothèques StarPU et NewMadeleine, puis de les évaluer sur des micro-benchmarks et des tests applicatifs.
Ce stage a vocation à déboucher sur une thèse, dont le financement est déjà assuré. Cette thèse s'intéressera de façon plus large à l'intégration entre NewMadeleine et StarPU.
Le stage se déroulera dans les locaux de l'Inria Bordeaux pour une durée de 6 mois.
Mot-clés : calcul haute-performance, réseau, programmation système
Commentaires : Les développements à réaliser se feront dans les bibliothèques StarPU et NewMadeleine disponibles en open source et se font en langage C. Il serait souhaitable qu'ils soient réalisés par une personne à l'aise en programmation réseau et système.
Références :