Les architectures de calcul haute performance (HPC) connaissent aujourd’hui une évolution rapide : intégration massive de GPU, hiérarchies mémoire de plus en plus profondes, interconnexions complexes et montée en échelle spectaculaire. Cette complexification rend les modèles de programmation traditionnels (MPI pur, OpenMP classique…) moins adaptés, notamment pour exploiter efficacement l’asynchronisme et le parallélisme fin.
Dans ce contexte, les systèmes de tâches se sont imposés comme une voie prometteuse. En laissant le programmeur exprimer son application comme un graphe de tâches avec dépendances, ils délèguent au runtime l’ordonnancement, la synchronisation, la gestion mémoire ou encore l’équilibrage de charge. Ces approches sont aujourd’hui adoptées dans de nombreuses bibliothèques scientifiques et codes de production.
Plusieurs modèles permettent d’exprimer un graphe de tâches :
Ces paradigmes influencent à la fois la programmabilité (expressivité, difficulté à représenter certains schémas) et les performances, notamment en termes de surcoûts d’analyse et d’ordonnancement.
De nombreuses applications HPC modernes présentent une charge de travail irrégulière ou dynamique : méthodes adaptatives, raffinements locaux, simulations multi-physiques, graph analytics, etc.
Elles imposent deux défis majeurs :
TTG est un modèle de programmation moderne (C++20) visant à concilier :
TTG permet ainsi d’exprimer des graphes complexes de manière élégante et efficace.
Le stage vise à explorer l’intégration du paradigme TTG au-dessus du système d’exécution StarPU, dont l’interface principale repose sur le modèle STF.
L’objectif final est de permettre à des applications écrites en TTG d’être exécutées de façon transparente via StarPU.
Le stage se déroulera en deux étapes principales :
Le stagiaire développera une couche d’adaptation capable de :
Le système devra permettre une exécution complète d’une application TTG en pilotant StarPU de manière incrémentale.
Dans un second temps, le stagiaire étudiera les mécanismes internes de StarPU pour permettre :
Cette phase offrira une compréhension fine d’un runtime HPC de production.
Ce stage constitue une excellente opportunité pour :
Motivé·e par la programmation système, le HPC ou les runtimes ? Ce stage te permettra de contribuer à faire évoluer les paradigmes de programmation pour les supercalculateurs de demain.
C++, C++-20, Task-Based Programming, Many Asynchronous Tasks, Emulation, Programming Paradigms
Une bonne connaissance du C++ peut aider, ainsi qu’une solide base des concepts système comme le parallélisme, les systèmes concurrentiels, et l’architecture de la machine.
Centre Inria de l’Université de Bordeaux
Joseph Schuchart, Poornima Nookala, Mohammad Mahdi Javanmard, Thomas Hérault, Edward F. Valeev, George Bosilca, Robert J. Harrison: “Generalized Flow-Graph Programming Using Template Task-Graphs: Initial Implementation and Assessment.” IPDPS 2022: 839-849
Augonnet, C., Thibault, S., Namyst, R., & Wacrenier, P. A. (2009, August). StarPU: a unified platform for task scheduling on heterogeneous multicore architectures. In European Conference on Parallel Processing (pp. 863-874). Berlin, Heidelberg: Springer Berlin Heidelberg.
Namyst, R., Thibault, S., & Wacrenier, P. A. Programming Heterogeneous Architectures Using Hierarchical Tasks. In Euro-Par 2022: Parallel Processing Workshops (p. 97).