Responsables :
Alexandre Denis (Inria), Grégoire Pichon (Atos)
Téléphone :
05.24.57.41.14
Courriels :
Alexandre.Denis@inria.fr
Gregoire.Pichon@atos.net
En calcul haute-performance, les calculs sont répartis sur différents serveurs, appelés noeuds de calcul, qui échangent de nombreuses données au travers du réseau. Ces calculs utilisent un réseau dédié, appelé réseau haute-performance, plus rapide que les réseaux traditionnels.
Ces réseaux ayant une latence de l'ordre de la microseconde, à cette échelle le coût d'un appel système n'est plus négligeable. Ces réseaux se programment habituellement directement depuis l'espace utilisateur, pour économiser le coût d'un appel système. Ce faisant, le suivi des requêtes en cours sur le réseau doit donc se faire directement depuis l'espace utilisateur, en interrogeant la carte réseau régulièrement, par une opération appelée polling. La contrainte est donc d'avoir un thread applicatif qui interroge régulièrement la carte : ce thread consomme donc des ressources CPU, et peut par exemple mobiliser un core du processeur. L'alternative serait d'utiliser les interruptions, mais celles-ci sont gérées par le noyau et passent donc par un appel système, que l'on cherche précisemment à éviter.
Les processeurs récents ont introduit de nouveaux mécanismes d'interruption en espace utilisateur. Il s'agit de gérer le déroulement complet d'une interruption directement en espace utilisateur, sans passer par un appel système ni un traitement de signal. Ces interruptions en espace utilisateurs sont donc susceptibles de combiner le meilleur des deux mondes : conserver une faible latence des réseaux haute-performance programmés directement depuis l'espace utilisateur, tout en bénéficiant de la souplesse des interruptions pour éviter d'avoir à dédier un thread au polling.
Dans le cadre de ce stage, nous utiliserons le réseau BXI (Bull eXascale Interconnect) développé par Atos (anciennement Bull). La particularité de BXI est de permettre l'offloading des tâches réseau sur la carte, de façon à ce qu'elles se déroulent sur la carte sans intervention du CPU.
Par ailleurs, l'équipe TADAAM développe la bibliothèque de communication NewMadeleine, qui applique une stratégie d'optimisation à la volée sur les flux de communications issus des différents threads, en assurant une progression asynchrone en tâche de fond. Elle repose essentiellement sur le principe de messages actifs, ce qui permet le déroulement des communications sans intervention de l'application.
Le stage s'inscrit dans le projet global d'utiliser les interruptions en espace utilisateur depuis les cartes réseau BXI pour faire remonter les évènements réseau jusque la bibliothèque NewMadeleine avec un coût aussi faible que possible.
L'objectif de ce stage est de débroussailler la notion d'interruption en espace utilisateur. Il s'agira de tester les propriétés et performances de ces mécanismes sur un exemple minimal en communication inter-processus, et d'envisager leur intégration dans le driver shm de NewMadeleine.
Ce stage a vocation à déboucher sur une thèse pour prolonger ces travaux.
Le stage se déroulera dans les locaux de l'Inria Bordeaux ou Atos Échirolles pour une durée d'environ 6 mois.
Mot-clés : réseau, programmation système, calcul haute-performance.
Commentaires : Les développements à réaliser se feront dans les bibliothèques BXI Compute Stack d'Atos et NewMadeleine de l'Inria, disponibles en open source, et se font en langage C. Il serait souhaitable qu'ils soient réalisés par une personne à l'aise en programmation système.
Références :