Tolérance aux pannes pour applications à bases de tâches

L’objectif est de contribuer au support de la tolérance aux pannes au sein de StarPU, un support d’exécution pour graphes de tâches.

Les systèmes de calcul haute performance embarquent toujours plus de machines reliées par un réseau rapide d’interconnexion. Pour exploiter efficacement de tels systèmes, il est devenu courant d’utiliser un support d’exécution basé sur un graphe de tâches à exécuter. L’application déclare les tâches à exécuter, et le support s’occupe de gérer de manière optimisée l’exécution sur le système et le transfert des données intermédiaires entre les machines du système.

Avec l’augmentation du nombre de machines de calcul vient cependant également l’augmentation du risque de voir l’une d’entre elles tomber en panne. Il n’est pas rare de constater parfois un temps moyen entre pannes de l’ordre de quelques heures seulement ! Avec les modèles de programmation classiques (par exemple de type MPI), lorsqu’une des machines tombe en panne, c’est toute l’application qui est interrompue, et il est nécessaire de la relancer entièrement sur l’ensemble des machines du système.

Des méthodes de checkpoint-restart permettent cependant de sauvegarder l'état de l’application au fur et à mesure de son exécution, obtenant ainsi une série de checkpoints (comme les sauvegardes dans les jeux vidéo). Si l’application est interrompue, on peut la redémarrer au dernier checkpoint. La sauvegarde d’un checkpoint nécessite cependant de mettre en pause l’exécution de l’ensemble de l’application, pour pouvoir sauvegarder un état cohérent.

Durant sa thèse, Romain Lion a proposé une intégration de cette méthode de checkpoint-restart avec l’exécution de graphes de tâches de StarPU. Cela permet ainsi d’une part de découpler la sauvegarde des checkpoints de l’exécution de l’application, réduisant ainsi grandement le surcoût. D’autre part, cela permet également un redémarrage local: seul la machine tombée en panne doit redémarrer l’exécution de l’application, les autres machines continuent leur exécution. Un log des messages réseau est nécessaire pour assurer une cohérence des messages reçus et envoyés par la machine redémarrée. La partie checkpoint a été achevée, les parties restart et log de message sont actuellement à l'état de prototypes.

Ce stage s’intéresse à contribuer à ce support du checkpoint-restart selon divers aspects. Il pourra débuter par l’extension de quelques applications StarPU existantes pour y ajouter l’utilisation de checkpoint-restart, et observer le comportement et les performances obtenues. Il pourra ensuite se poursuivre selon deux aspects à aborder au choix:

  • Intégrer la partie restart à StarPU. Il s’agit donc de restaurer les données sauvegardées précédemment dans un checkpoint, et de redémarrer l’application à l'état correspondant.

  • Intégrer la partie log de message à StarPU. Un prototype complet existe et reste à intégrer au sein de StarPU.

L’objectif de ce stage est d’aborder l’une ou l’autre des thématiques proposées ci-dessus, de proposer et d’implémenter des nouveaux mécanismes dans la bibliothèque StarPU, puis de les évaluer sur des micro-benchmarks et des tests applicatifs.

Ce stage a vocation à déboucher sur une thèse, dont le financement est déjà assuré.

Mots-clés:

Calcul haute-performance, réseau, tolérance aux pannes, graphes de tâches

Pré-requis:

Les développements à réaliser se feront dans la bibliothèque StarPU disponibles en open source et se feront en langage C. Il serait souhaitable qu’ils soient réalisés par une personne à l’aise en programmation MPI.

Contacts :

Samuel Thibault Amina Guermouche

Lieu du stage :

Le stage se déroulera dans les locaux de l’Inria Bordeaux pour une durée d’environ 6 mois.

Référence: