Programmation des architectures hétérogènes à l’aide de tâches divisibles
Auteur / Autrice : | Gwenolé Lucas |
Direction : | Abdou Guermouche, Raymond Namyst |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 10/10/2023 |
Etablissement(s) : | Bordeaux |
Ecole(s) doctorale(s) : | École doctorale Mathématiques et informatique (Talence, Gironde ; 1991-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire bordelais de recherche en informatique |
Jury : | Président / Présidente : Alfredo Buttari |
Examinateurs / Examinatrices : Thomas Hérault, Vincenç Beltran, Isabelle Terrasse | |
Rapporteur / Rapporteuse : Alfredo Buttari, Siegfried Benkner |
Résumé
Au cours des dernières décennies, les plateformes de calcul haute performance ont connu une croissance exponentielle de leur puissance de calcul au détriment d’une complexité toujours plus grande. Programmer ces plateformes pour tirer pleinement parti de leur puissance de calcul est un défi de taille. Le programmeur doit prendre en compte les différents types d’unités de calcul, la hiérarchie de la mémoire, les transferts de données au sein d’un noeud ou à travers un réseau, etc. Les supports d’exécution à base de tâches ont gagné en popularité grâce à leur capacité à exprimer des applications performantes et portables sur ces architectures hétérogènes complexes. Ce paradigme s’appuie sur divers modèles de programmation pour représenter les applications sous la forme de graphes de tâches. Plus particulièrement, le modèle de soumission séquentielle de tâche (Sequential Task Flow, STF) fournit une interface simple pour écrire des applications performantes, mais ne produit malheureusement que des graphes de tâches statiques. Ce manque de dynamisme est préjudiciable aux exécutions destinées à des systèmes hétérogènes, où la granularité des tâches peut avoir besoin d’être ajustée selon les types d’unités de calcul disponibles à un moment donné. La nature séquentielle du modèle STF crée également un surcoût à la soumission qui peut limiter le passage à l’échelle de certaines applications présentant énormément de parallélisme. Cette thèse propose de répondre à ces problèmes en étendant le modèle de StarPU pour y inclure des tâches hiérarchiques, capables d’insérer des sous-graphes au cours de leur exécution. Les graphes de tâches gagnent ainsi en dynamisme, ce qui permet d’ajuster la granularité des tâches à l’exécution pour correspondre au mieux aux unités de calcul ciblées. Par ailleurs, les tâches hiérarchiques peuvent être utilisées pour paralléliser le processus de soumission et en réduire le surcoût. En effet, il est possible de traiter des tâches hiérarchiques indépendantes en parallèle. Notre modèle est complété par un gestionnaire de données capable d’adapter dynamiquement la disposition des données sans intervention du programmeur. Il contribue également à l’exactitude du graphe de tâche, car l’insertion de sous-graphes à l’exécution contourne les règles du STF. Nous parvenons à ce résultat grâce aux tâches de synchronisation qui ajustent la disposition des données autour des tâches hiérarchiques. Nous avons implémenté ce modèle et l’avons appliqué à la bibliothèque d’algèbre linéaire dense Chameleon. La coexistence de plusieurs granularités de tâches a permis d’améliorer les performances sur des architectures hétérogènes. Cela valide notre modèle et fournit une évaluation des avantages de l’utilisation de tâches hiérarchiques dans StarPU.