Problématique
De nos jours, les machines multiprocesseurs sont de plus en plus complexes: mémoire NUMA, niveaux de cache partagé, accélérateurs GPGPU/FPGA, cartes réseau ... Comment ordonnancer correctement des calculs scientifiques non réguliers sur de telles machines ?! Il n'est plus réaliste de réaliser cet ordonnancement à la main, et l'on recourt à des ordonnanceurs dynamiques, qui permettent d'exploiter ces machines. Pour pouvoir optimiser l'ordonnancement, on utilise de nos jours de plus en plus le paradigme de tâches, auxquelles sont attachées des informations plus ou moins précises de durée, occupation mémoire, priorité, etc.
Publications (.bib), Google Scholar, Research Gate
Mon HDR est disponible en PDF (anglais), ainsi que les transparents (anglais) et la recette du gâteau Christine au chocolat (français).
- On Runtime Systems for Task-based Programming on Heterogeneous Platforms,
Samuel Thibault,
Habilitation à diriger les recherches, Université de Bordeaux, 2018.
Publications phare:
- Achieving High Performance on Supercomputers with a Sequential Task-based Programming Model (PDF),
Emmanuel Agullo, Olivier Aumage, Mathieu Faverge, Nathalie Furmento, Florent Pruvost, Marc Sergent, Samuel Thibault,
IEEE Transactions on Parallel and Distributed Systems, Institute of Electrical and Electronics Engineers, 2017 - Bridging the Gap between Performance and Bounds of Cholesky Factorization on Heterogeneous Platforms (PDF),
Emmanuel Agullo, Olivier Beaumont, Lionel Eyraud-Dubois, Julien Herrmann, Suraj Kumar, Loris Marchal, Samuel Thibault,
Heterogeneity in Computing Workshop 2015, May 2015, Hyderabad, India. 2015 - Faithful Performance Prediction of a Dynamic Task-Based Runtime System for Heterogeneous Multi-Core Architectures (PDF),
Luka Stanisic, Samuel Thibault, Arnaud Legrand, Brice Videau, Jean-François Méhaut,
Concurrency and Computation: Practice and Experience, Wiley, 2015, pp.16 - Faster, Cheaper, Better -- A Hybridization Methodology for High-Performance Linear Algebra Software for GPUs (PDF),
Emmanuel Agullo, Cédric Augonnet, Jack Dongarra, Hatem Ltaief, Raymond Namyst, Samuel Thibault, Stanimire Tomov,
Wen-mei W. Hwu. GPU Computing Gems, 2, Morgan Kaufmann, 2010 - StarPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architectures
(PDF),
Cédric Augonnet, Samuel Thibault, Raymond Namyst, Pierre-André Wacrenier,
Concurrency and Computation: Practice and Experience, Wiley, 2011, Euro-Par 2009 best papers - hwloc: a Generic Framework for Managing Hardware Affinities in HPC Applications
(PDF),
François Broquedis, Jérôme Clet-Ortega, Stéphanie Moreaud, Nathalie Furmento, Brice Goglin, Guillaume Mercier, Samuel Thibault, Raymond Namyst,
IEEE. PDP 2010 - The 18th Euromicro International Conference on Parallel, Distributed and Network-Based Computing, Feb 2010, Pisa, Italy. 2010
Encadrant de thèse pour:
- Jean-François David
- Radjasouria Vinayagame
- Thomas Morin
Précédemment co-encadrant de thèse pour:
- Maxime Gonthier, manuscrit, maintenant post-doc à Argonne labs
- Romain Lion, manuscrit, maintenant ingénieur chez Inria
- Idriss Daoudi, manuscrit, maintenant chercheur au BSC
- Suraj Kumar, manuscrit, maintenant CR Inria dans l'équipe Roma, Lyon
- Marc Sergent, manuscrit, maintenant ingénieur chez Eviden, France
- Corentin Rossignon, manuscrit, maintenant ingénieur chez Spacebel, France
- Paul-Antoine Arras, manuscrit, maintenant Freelance, France
- Cédric Augonnet, manuscrit, maintenant chercheur senior chez NVIDIA
Ordonnancement de tâches sur systèmes hétérogènes, StarPU
Cédric Augonnet, durant sa thèse sous ma co-direction, a élaboré StarPU, un environnement pour ordonnancer des tâches sur des machines hétérogènes. L'idée est d'essayer d'effectuer toutes les optimisations à l'exécution: les transferts de données sont minimisés et effectués à l'avance, recouverts par les calculs, et interagissent avec les décisions d'ordonnancement de tâches. Ces dernières prennent en compte des modèles de performance des tâches, ce qui permet de capturer l'aspect hétérogène de la machine, et même d'en profiter !
StarPU est de plus en plus utilisé pour différents bibliothèques de calcul scientifique telles que l'algèbre linéaire (projet MORSE).
Nous avons étendu le modèle de programmation StarPU à l'exploitation distribuée de clusters à l'aide de MPI, ce qui pose des questions de passage à l'échelle.
Nous avons étendu la gestion des données de StarPU à l'utilisation des disques, permettant ainsi des calculs out of core, ce qui pose des questions d'optimisation des transferts.
La combinaison de StarPU avec Simgrid nous permet de simuler l'exécution, ce qui apporte non seulement un gain de temps pour observer les performances obtenues avec différentes heuristiques d'ordonnancement, mais aussi de modifier les paramètres de l'architectures simulée (bande passante, unités de calcul, ...) ! Plus généralement, avec la modularisation des ordonnanceurs StarPU, cela permet de fournir aux théoriciens une plate-forme pour tester différentes heuristiques sur des applications réelles, tout en évitant toutes les contraintes techniques de l'exécution réelle sur un système de production (fautes matérielles, versions de logiciels changeantes, ...).
Un enregistrement vidéo (26 min.) de ma présentation à la conférence XDC2014 donne un aperçu de ces travaux (transparents):
Une présentation à une classe de CM1 explique la problématique globale de manière très simple. (source ODP)
Projets actuels liés à StarPU:
- EU TEXTAROSSA, TBD
- ANR SOLHARIS a pour objectif d'obtenir des passages à l'échelle forte et faible (i.e. la capacité à résoudre des problèmes de tailles de plus en plus grande tout en conservant une utilisation efficace des moyens de calcul disponibles) des solveurs creux et direct, sur une grande échelle, avec mémoire distribuée, et des systèmes hétérogènes. Ces solveurs vont s'appuyer sur le parallélisme de tâches asynchrones, plutôt que l'approche traditionnelle est largement utilisée de passage de messages et multithreading; ce paradigme sera implémenté au moyen de systèmes d'exécution modernes qui ont montré être de bons outils pour le développement d'applications de calcul scientifique.
Au sein de ce projet Within this project, nous alors inventer de nouvelles stratégies d'ordonnancement qui favorisent la localité des données, pour améliorer l'exécution dans les cas de contrainte mémoire. - IPL HPC-BIGDATA, l'objectif est de rassembler des équipes des domaines du HPC, du Big Data et du Machine Learning (ML) pour travailler à l'intersection entre ces domaines. Il vise une convergence d'architecture capable de supporter à la fois des applications HPC et Big Data, avec un réseau d'interconnexion haute performance (de type HPC) et des capacités de stockage permanent sur les nœuds (de type Cloud). La recherche est organisée en trois axes principaux: la gestion de resource prenant en compte les données, l'analyse de données avancée pour les simulations scientifiques et l'apprentissage à haute performance.
Au sein de ce projet, nous allons étudier le portage de SciKit-learn au-dessus de la programmation à base de tâches, ce qui fournira un défi intéressant de gestion des données pour StarPU.
Nous allons également intégrer dans StarPU une stratégie d'ordonnancement basée sur le machine-learning, c-à-d une approche BigData-pour-HPC.
Projets précédents liés à StarPU:
- EU H2020 FETHPC EXA2PRO, l'objectif était de développer un environnement de programmation qui permet le déploiement productif d'applications hautement parallèles dans des systèmes de calcul exascale. Il a abordé les performances, la portabilité des performances, la programmabilité, l'abstraction et la réutilisabilité, la tolérance aux pannes et la dette technique. Il s'est appuyé sur la programmation par squelettes, la composition de composants, un support d'exécution dynamique, et des accélérateurs FPGA.
Au sein de ce projet, nous avons étudié le niveau de support de tolérance aux panne que le support d'exécution StarPU peut fournir, et conçu des politiques d'ordonnancement multicritère pour optimiser à la fois en temps, en énergie, et en tolérance aux pannes. - IPL HAC SPECIS, l'objectif était de répondre aux besoins méthodologiques des développeurs d'applications et de supports d'exécution HPC et de permettre d'étudier de vrais systèmes HPC à la fois du point de vue correction et performance. À cette fin, il a rassemblé des experts des communautés du HPC, de la vérification formelle et de l'évaluation de performances.
Au sein de ce projet, nous avons étendu le support de simulation de StarPU, jusqu'à essayer d'en vérifier des parties à l'aide d'un model checker. Nous avons étudié des techniques de visualisation pour fournir un retour de performance au programmeur de support d'exécution et au programmeur applicatif. Nous avons également modélisé l'agrandissement des données creuses pour pouvoir fournir des garanties probabilistiques de non-débordement mémoire. - Équipe associée MORSE avec l'Université du Tennessee (UTK), l'objectif était de concevoir des méthodes d'algèbre linéaire dense et creuse qui obtiennent, en le meilleur temps possible, des solutions précises sur de grands systèmes multicœur avec des accélérateurs GPU, en utilisant toutes les capacités de calcul que les futurs systèmes haut de gamme fourniront. Nous avons conçu un cadriciel pour décrire les algorithmes d'algèbre linéaire à un haut niveau d'abstraction, pour permettre une collaboration forte entre les groupes de recherche en algèbre linéaire et en supports d'exécution.
Au sein de ce projet, nous avons expérimenté l'utilisation de StarPU pour des applications d'algèbre linéaire dense et creuse, et amélioré les heuristiques d'ordonnancement. Nous avons montré que cette approche était très effective et a convaincu l'équipe de UTK d'utiliser des supports d'exécution pour l'algèbre linéaire. - DGA Rapid HI-BOX, l'objectif était de développer une bibliothèque générique de solveurs rapides parallèles pouvant être utilisée dans des codes BEM existants. Elle s'appuie sur les dernières avancées dans les méthodes numériques pour les équations intégrales, l'algèbre linéaire et le calcul parallèle: FMM, H-matrice, GMRES, et la programmation à base de graphe de tâches et moteur d'exécution.
Au sein de ce projet, nous avons expérimenté les capacités Out-of-core de StarPU, ce qui nous a montré la contradiction entre prioriser le chemin critique et privilégier la localité. Nous avons également étendu StarPU avec un support master-slave MPI. - ANR SOLHAR, l'objectif était d'étudier et concevoir des algorithmes et modèles de programmation parallèle pour implémenter des méthodes directes pour la résolution de systèmes linéaires creux sur les plateformes émergentes équippées d'accélérateurs.
Au sein de ce projet, nous avons expérimenté StarPU avec des applications d'algèbre linéaire creuse, et abordé les défis en termes de gestion de tâches très petites et consommation mémoire. Nous avons également commencé à combler le fossé entre l'ordonnancement théorique et l'ordonnancement pratique avec un support d'exécution. Nous avons enfin commencé à aborder les plateformes de grande échelle. - ANR SONGS, l'objectif était d'étendre l'utilisation du cadriciel de simulation SimGrid des grilles et systèmes pair-à-pair au cloud et aux systèmes de Calcul Haute Performance.
Au sein de ce projet, nous avons ajouté un support de simulation à StarPU à l'aide de SimGrid, ce qui permet d'effectuer des expériences sur les tâches complètement reproductibles, et même extrapoler les capacités de performance. - HPC-GA, l'objectif était d'évaluer les fonctionalités fournies par les supports d'exécution pour les applications géophysiques, pour exploiter les superordinateurs hétérogènes actuels, et de concevoir de nouvelles méthodes et mécanismes pour un ordonnancement efficace et une distribution de données adaptée.
Au sein de ce projet, nous avons confronté nos visions de l'exécution dynamique de threads et de tâches. - ANR/JST FP3C, l'objectif était d'établir les technologies, langages et modèles de programmation logiciel pour explorer le calcul à performance extrême au-delà du calcul à l'échelle peta, sur la route de l'échelle exa.
Au sein de ce projet, nous avons collaboré avec l'université de Tsukuba pour le portage du compilateur XcalableMP au-dessus de StarPU, typiquement pour des simulations sismiques. - EU STREP PEPPHER, l'objectif était de concevoir un cadriciel unifié pour programmer et optimiser les applications pour des processeurs d'architectures diverses, many-core, hétérogènes, pour assurer une portabilité des performances.
Au sein de ce projet, nous avons intégré l'utilisation de StarPU au sein de SkePU, un environnement de programmation basé sur les squelettes de l'Université de Linköping, et au sein d'un cadriciel d'exécution pipelinée de l'Université de Vienne. Nous avons intégré l'utilisation d'un simulateur d'accélérateur de Movidius dans StarPU, et avons porté StarPU sur le processeur Intel MIC, maintenant connu sous l'appelation Xeon Phi. - ANR MediaGPU, l'objectif était de concevoir et implémenter de nouveaux modèles mathématiques et de nouveaux modèles algorithmiques pour traiter des données multimedia de grande échelle ou de grande résolution, à l'aide d'une exécution sur GPU.
Au sein de ce projet, nous avons collaboré avec l'Institut Télécom sur l'intégration de StarPU avec un rendu graphique OpenGL, ce qui a nécessité d'introduire une conversion de formats de données à la volée et le compromis d'ordonnancement correspondant. - ANR ProHMPT, l'objectif était d'exprimer et extraire les tâches élémentaires applicatives avec une annotation sémantique suffisamment riche pour autoriser un pilotage précis de l'application par un code d'ordonnancement dynamique, et une remontée d'information précise et permanente sur le comportement de la pile logicielle durant les sessions de calcul.
Ce projet a été moteur pour l'élaboration du cœur de StarPU. Nous y avons collaboré avec CAPS sur l'intégration des fonctionalités statiques et dynamiques de leur compilateur HMPP avec l'utilisation du support d'exécution StarPU.
Précédents travaux: modéliser les structures architecturales, hwloc
De mes travaux sur la hiérarchie d'une machine détaillés plus bas, nous avons extrait une brique logicielle, HwLoc, qui s'occupe d'abstraire les détails de détection et représentation de la hiérarchie d'une machine, qui est modélisée sous forme d'un arbre annoté. Les applications de calculs peuvent ainsi facilement, de manière portable, manipuler explicitement des « cœurs », des « sockets », mais aussi considérer la machine comme une hiérarchie générique, sans se soucier des détails architecturaux. Cette brique est désormais utilisée dans toutes les grandes implémentations de l'interface de communication MPI, et dans de nombreux projets de calcul. Elle est ainsi présente dans la majorité des centre de calculs.
Précédents travaux: ordonnancement de threads sur systèmes hiérarchiques, Marcel
L'idée de base que j'ai développée durant ma thèse est de fournir aux programmeurs un moyen d'exprimer comment les threads de leurs application sont reliés: des bulles. Une bulle exprime par exemple que certains threads travaillent sur le même jeu de données, qu'ils communiquent souvent ensemble, ... si bien qu'ils devraient être ordonnancés dans le même "coin" de la machine ; ceci de manière hiérarchique.
J'ai développé une API qui permet de manipuler ces bulles avec un haut niveau d'abstraction. Ainsi, on peut expérimenter différents ordonnanceurs de distributions sans avoir à se soucier des détails techniques. On peut réellement se concentrer sur les problèmes algorithmiques.
J'ai développé quelques "ordonnanceurs à bulles" qui manipulent de telles hiérarchies de bulles: étaler la charge de calcul tout en prenant en compte les affinités, gang scheduling, vol de travail. Des stagiaires ont ensuite pu expérimenter d'autres stratégies: privilégier les affinités avant tout, prendre en compte la quantité des données utilisées, leur partage et la fréquence d'accès, ... Tout cela d'une façon qui peut s'adapter automatiquement à n'importe quelle machine hiérarchisée ! La thèse de François Broquedis a alors développé ces ordonnanceurs, en les expérimentant sur des applications OpenMP.
Ma thèse est disponible en PDF (français), ainsi que les transparents de la soutenance (anglais).
Ceci était développé au sein de Marcel, la bibliothèque de threads à la fois efficace, portable et flexible du projet PM2.
Projets précédents liés à Marcel:
Autres projets
- Le projet BrlAPI, au départ simple projet de Licence, est devenu le standard de fait pour qu'une application prenne le contrôle d'un afficheur braille sans se soucier des détails de drivers (de manière similaire à X11) BrlAPI: Simple, Portable, Concurrent, Application-level Control of Braille Terminals (ICTA 2007)
- Stage Maîtrise: "Developing a software tool for precise kernel measurements"
- Stage Licence: "OpenGL distribué" rapport, et papier soumis à Commodity-based Clusters for Vizualisation 02 (ccviz02): "Unreliable Transport Protocol for Commodity-based OpenGL Distributed Visualization", transparents