Sujet de stage

Émulation du paradigme Template Task Graphs (TTG) au-dessus d’un système d’exécution Sequential Task Flow

Contexte général

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.

Paradigmes de programmation pour les systèmes de tâches

Plusieurs modèles permettent d’exprimer un graphe de tâches :

  • Sequential Task Flow (STF), utilisé notamment par StarPU, où le graphe est inféré à partir de la séquence des accès aux données.
  • Les modèles basés sur continuations ou C++ futures, qui mettent l’accent sur la composition asynchrone.
  • Les approches basées sur une représentation explicite du DAG, interprétée dynamiquement par le runtime.

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.

Applications dynamiques et irrégulières

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 :

  1. L'équilibrage de charge, difficile car la structure de l’application évolue au cours de l’exécution.
  2. L’expression du graphe de tâches, car les dépendances elles-mêmes peuvent être dynamiques ou découvertes progressivement.

Template Task Graphs (TTG)

TTG est un modèle de programmation moderne (C++20) visant à concilier :

  • une description de haut niveau des tâches, concise et paramétrée, permettant une découverte parallèle du DAG, et
  • une nature dynamique, adaptée aux applications irrégulières, où les dépendances ne sont pas toujours connues à l’avance.

TTG permet ainsi d’exprimer des graphes complexes de manière élégante et efficace.

Objectif du stage

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.

Travail attendu

Le stage se déroulera en deux étapes principales :

Émulation TTG → STF (prototype fonctionnel)

Le stagiaire développera une couche d’adaptation capable de :

  • interpréter les dépendances exprimées via TTG,
  • suivre la disponibilité des données au fil de l’exécution,
  • soumettre les tâches prêtes à StarPU via STF,
  • notifier TTG de la complétion des tâches pour libérer de nouvelles dépendances.

Le système devra permettre une exécution complète d’une application TTG en pilotant StarPU de manière incrémentale.

Intégration plus profonde avec StarPU

Dans un second temps, le stagiaire étudiera les mécanismes internes de StarPU pour permettre :

  • la découverte directe des dépendances TTG par le runtime,
  • une interaction plus native entre TTG et les structures internes de StarPU,
  • une réduction des surcoûts liés à l'émulation.

Cette phase offrira une compréhension fine d’un runtime HPC de production.

Compétences acquises

Ce stage constitue une excellente opportunité pour :

  • apprendre la programmation moderne en C++20,
  • comprendre en profondeur les runtimes HPC (StarPU),
  • manipuler les concepts avancés de DAG dynamique, ordonnancement, et équilibrage de charge,
  • travailler sur un sujet de recherche actuel lié à l’exascale.

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.

Mots-clés:

C++, C++-20, Task-Based Programming, Many Asynchronous Tasks, Emulation, Programming Paradigms

Pré-requis:

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.

Contacts:

thomas.herault@inria.fr

Lieu du stage:

Centre Inria de l’Université de Bordeaux

Références:

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).