Sites Inria

English version

Inria & le HPC

StarPU: intégrez la performance des architectures hétérogènes grâce à du développement générique

StarPU est une brique logicielle permettant de fournir une vision unifiée et générique des infrastructures disponibles au calcul quelle qu'elles soient : CPU, GPU, etc.

StarPU propose une API qui permet de manière automatique l'exécution de code sur les ressources disponibles, tout en prenant en compte les dépendances de données afin d'optimiser l’exécution des calculs. Ceci permet à travers une unique interface de programmation de développer un logiciel plus clair, simple, et générique, et permet donc aux utilisateurs de profiter au mieux des infrastructures disponibles en maximisant les performances des applications.

StarPU a pour vocation de répondre aux problématiques utilisateur/utilisatrice suivantes :

  • Développer des applications indépendantes de l'infrastructure sous-jacente réduit leur performance et leur scalabilité ;
  • Devoir prendre en compte soi-même l'interaction entre les ressources hétérogènes de calcul potentiellement disponibles chez le client ou la cliente final.e au niveau programmatique ;
  • Trop grande difficulté de programmation qui résulte en une sous-utilisation des ressources de calcul à disposition.

Grâce à StarPU , les utilisateurs et utilisatrices bénéficient de :

  • Prise en compte améliorée des architectures hétérogènes ;
  • Gain de temps dans la résolution des calculs ;
  • Développement logiciel simplifié ;
  • Capacité des applications à gérer des infrastructures qui étaient jusque-là sous-exploitées ;
  • Capacité des développeurs et développeuses à se concentrer sur le cœur de l'application et non sur la prise en compte de l'interaction entre des ressources hétérogènes ;
  • Optimisation de l'exploitation des infrastructures et réduction du coût d'utilisation de ses infrastructures et de ses équipes de développeurs et développeuses.

Description technique de la solution

StarPU permet aux bibliothèques HPC ou aux environnements de compilation d'exploiter, de manière beaucoup plus simple, des machines multicœurs hétérogènes équipées de CPU ou de GPU. Au lieu de gérer les problématiques bas niveau, les programmeurs et programmeuses peuvent se concentrer sur les aspects d'algorithmique.
La portabilité est ainsi obtenue grâce à une abstraction unifiée des ressources d'une machine de calcul. StarPU offre par ailleurs une abstraction unifiée de tâche déportable nommée "codelet ". Ainsi, au lieu de réécrire tout le code, les programmeurs et programmeuses peuvent encapsuler des fonctions existantes dans des codelets .

Dans l'éventualité où un codelet pourrait être exécuté sur des architectures hétérogènes, il est possible de spécifier une fonction par architecture (par ex. une fonction pour CUDA, et une pour CPU, etc.).

StarPU prend en charge l'ordonnancement et l'exécution de ces codelets aussi efficacement que possible sur l'ensemble de la machine à disposition. Afin de simplifier le travail du programmeur ou de la programmeuse quant à l'écriture explicite du transfert de données entre les ressources de calcul, StarPU propose une gestion de données haut niveau assurant la cohérence de la mémoire pour toute la machine. Ainsi avant que le codelet soit exécuté (sur un GPU par exemple), toutes les données nécessaires sont rendues disponibles de manière transparente sur la ressource de calcul. Etant donné l'expressivité de l'interface et les politiques d'ordonnancement portables, StarPU permet d'obtenir des performances en exploitant de manière simple et efficace l'ensemble des ressources de la machine de calcul en même temps. Dans la même optique de tirer avantage de la nature hétérogène de la machine de calcul, StarPU utilise des stratégies d'ordonnancement basées sur des modèles de performances capables de régler au mieux leurs paramètres de manière automatique.

StarPU fournit ainsi des algorithmes permettant de prendre en compte :
  • L'implémentation de tâches pour les GPU et les CPU ;
  • La gestion des tâches à exécuter sous forme d’un graphe de tâches.
StarPU fournit ainsi les problématiques temps réel suivantes :
  • Gestion des dépendances des tâches ;
  • Ordonnancement optimisé pour des ressources hétérogènes ;
  • Réplication et transfert de données optimisés entre la mémoire principale et les mémoires associées aux ressources de calcul ;
  • Communications optimisées pour les clusters .

Présentation de l'équipe-projet STORM

L'équipe STORM (Optimisation statique, méthodes d’exécution) travaille dans le domaine des Réseaux, systèmes et services, calcul distribué. Et plus particulièrement sur les thématiques liées au Calcul distribué et à haute performance.

En savoir plus

Mots-clés : StarPU Runtime Architectures hétérogènes HPC GPU

Haut de page

Suivez Inria