Ordonnancement de tâches en considérant la fréquence uncore dans StarPU

Le stage a pour but d'étudier comment placer les tâches de StarPU en fonction de la fréquence uncore appliquée.

Présentation détaillée :

Ces dernières décennies, les super calculateurs ont vu leurs tailles augmenter avec de plus en plus de composants. Cependant, la consommation énergétique représente l’obstacle majeur pour atteindre encore plus de performance (l’exascale). En effet, Frontier, le super calculateur le plus performant, consomme environ 40 MW.

Afin de contrôler la puissance consommé par un processeur, le système dispose de plusieurs leviers tels que la réduction de la fréquence lors de l’utilisation d’instructions énergivores, la limitation de la consommation de puissance, …

Dans ce stage, nous nous intéresserons à la fréquence uncore. La fréquence uncore représente la fréquence du cache L3, des contrôleurs mémoire, …. Elle peut être positionnée indépendemment de la fréquence des coeurs [2]. Dans ce stage, nous étudierons où placer les calculs en fonction d’une fréquence uncore choisie. Par exemple, si sur un processeur, la fréquence uncore est faible, alors il serait plus profitable de placer des phases dites CPU-intensive (qui font beaucoup de calcul par rapport aux accès mémoire) sur ce processeur.

Afin d’avoir la division de l’application en plusieurs phases, nous allons nous baser sur un modèle de programmation par tâches: l’application est représentée sous forme de graphe de tâches guidées par les dépendances des données. Pour cela nous utiliserons le support d’exécution StarPU [3], dans lequel les applications sont déjà sous forme de graphe de tâches. Ce travail a donc pour but d’indiquer à StarPU où placer les tâches en fonction de la fréquence uncore.

Les étapes du stage sont les suivantes. Nous commencerons par étudier un ordonnancement statique, où les tâches CPU-intensive seront placées sur un socket, et les tâches memory-intensive sur un autre socket. La fréquence de chaque socket sera adaptée en fonction des besoins des tâches (les tâches memory-intensive seront plus sensibles à la fréquence uncore que les tâches CPU-intensive). Cet ordonnancement risque de poser des problèmes tels que la congestion mémoire sur le processor qui contient uniquement des tâches memory-intensive, et un impact sur les performances dû aux mouvements des données. Par la suite, nous étudierons une façons plus dynamique de placer les tâches et de positionner la fréquence uncore. Enfin, nous étendrons les modèles de performance de StarPU afin que le placement des tâches en fonction de la fréquence uncore se fasse de manière automatique.

Les applications utilisées pour ce stage seront des applications d’algèbre linéaire dense pour commencer. Puis nous étudierons les applications d’algèbre linéaire creuse qui sont moins régulières et ont des accès mémoire plus importants. Pour cela, nous nous baserons sur des bibliothèques implémentées au dessus de StarPU (chameleon [4] pour l’algèbre linéaire dense, et PaStiX [5] ou qr-mumps [6] pour l’algèbre linéaire creuse). Nous étudierons également comment différentes implémentation d’un même calcul impactent la puissance et l'énergie consommées.

Enfin, nous utiliserons principalement Grid’5000 comme environnement de travail.

Les résultats du stage pourront s’intégrer dans le cadre du projet Euro-HPC MICROCARD. De plus, un séjour au sein du département du calcul haute performance de Simula, en Norvège, pourrait être envisagé.

Mots-clés:

Energie, Puissance, Fréquence uncore, StarPU

Pré-requis:

Langage de programmation : C

Programmation parallèle (MPI, Cuda)

Outils de compilation (make, cmake, …)

Environnement Linux

Utilisation et/ou programmation sur une machine parallèle

Contacts :

amina.guermouche@inria.fr

Lieu du stage :

INRIA Bordeaux Sud-Ouest, 200 Avenue de la Vieille Tour, 33405 Talence

Référence:

[1] https://exascale.llnl.gov/

[2] Étienne André, Rémi Dulong, Amina Guermouche, François Trahay. DUF: Dynamic uncore frequency scaling to reduce power consumption. Concurrency and Computation Practice and Experience. October 2021.

[3] Cédric Augonnet, Samuel Thibault, Raymond Namyst, and Pierre-André Wacrenier. StarPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architectures. CCPE - Concurrency and Computation: Practice and Experience, Special Issue: Euro-Par 2009, 23:187-198, February 2011

[4] Agullo, Emmanuel and Aumage, Olivier and Faverge, Mathieu and Furmento, Nathalie and Pruvost, Florent and Sergent, Marc and Thibault, Samuel, Achieving High Performance on Supercomputers with a Sequential Task-based Programming Model, Research Report, First Online: 16 June 2016

[5] Pascal Hénon, Pierre Ramet, Jean Roman. PaStiX: A High-Performance Parallel Direct Solver for Sparse Symmetric Definite Systems. Parallel Computing, Elsevier, 2002, 28 (2), pp.301–321

[6] Emmanuel Agullo, Alfredo Buttari, Abdou Guermouche, and Florent Lopez. Implementing multifrontal sparse solvers for multicore architectures with sequential task flow runtime systems. ACM Trans. Math. Softw., 43(2):13:1–13:22, August 2016