Suivez

la liste

Contexte

Projet

Le projet de développement logiciel s'inscrit dans une collaboration entre les équipes POEMS et ALPINES, d'Inria Saclay et Paris respectivement, autour de la bibliothèque Htool et dont le but est de proposer des méthodes rapides et efficaces pour la résolution de systèmes linéaires denses. L'objectif de ce projet est d'écrire une implémentation parallèle de la factorisation approchée de matrices hiérarchiques dans la bibliothèque Htool à l'aide du parallélisme par tâches. L'application est d'accélérer la résolution de systèmes linéaires denses via des méthodes de décomposition de domaine. Pour plus d'informations : l'offre en français et en anglais

Localisation

Unité de Mathématiques Appliquées (UMA), ENSTA Paris, 828, Boulevard des Maréchaux, 91762 Palaiseau, France.

Durée

Deux ans, début du contrat après avril 2023.

Encadrants

  • Pierre Marchand, POEMS, UMA, ENSTA Paris
  • Pierre-Henri Tournier, ALPINES, LJLL, Sorbonne Université

Mission confiée

La personne recrutée sera amenée à proposer une implémentation parallèle d'une méthode de factorisation approchée pour résoudre des systèmes linéaires denses dans la bibliothèque Htool.

La méthode choisie s'appuiera sur les matrices hiérarchiques associées à des approximations de rang faible. L'objectif est d'accélérer la résolution de systèmes denses via des méthodes de décomposition de domaine. Ces dernières s'appuient sur la résolution de problèmes locaux plus petits, le plus souvent via des factorisations que nous cherchons ici à paralléliser en utilisant le parallélisme de tâches.

Dans un premier temps, il sera demandé de se familiariser avec la bibliothèque Htool, en ajoutant par exemple un nouveau type d'approximation de rang faible qui est une variation d'une méthode déjà présente dans la bilbiothèque. Par ailleurs, pour appréhender les techniques de parallélisme de tâche, on pourra proposer une factorisation LU dense parallélisée avec OpenMP (qui a depuis la version 4 un modèle de parallélisme de tâches avec dépendance). Il sera aussi possible de comparer avec d'autres frameworks de parallélisation par tâche tels que StarPU ou OmpSs.

Par la suite, l'objectif sera de proposer des implémentations des différentes opérations avec les matrices hiérarchiques en utilisant le parallélisme de tâches : assemblage et produit matrice vecteur pour commencer, afin de comparer avec les implémentations parallèles actuelles de Htool, puis la factorisation LU.

Il est attendu que chaque implémentation soit validée par des tests de passage à l'échelle, ainsi que des comparaisons entre les différents frameworks de parallélisme de tâches.

Principales activités

Principales activités

  • Travail bibliographique concernant les algorithmes pour la parallélisation par tâche dans le contexte des matrices hiérarchiques
  • Développer ces algorithmes dans la bibliothèque Htool
  • Tester, modifier jusqu’à valider

Activités complémentaires

  • Rédiger la documentation des nouvelles fonctionnalités
  • Présenter l’avancée des travaux à l'équipe de développement

Profil recherché

Personne avec des compétences en C++ moderne (au moins C++11), et de l'expérience dans l'écriture de code parallélisé dans le contexte du calcul scientifique, idéalement parallélisme de tâches, ou alors parallélisme en mémoire distribuée (MPI) ou partagée (OpenMP). Dans ce dernier cas, ce projet sera l'occasion de se former au parallélisme de tâches.

Il est aussi attendu des compétences classiques de gestion de projet informatique, notamment utilisation de Git et CMake, ainsi qu'une volonté de travailler en équipe et d'apprendre. Il est important d'avoir de bonnes compétences de rédaction écrite et de présentation orale.

Pour candidater

Joindre les documents suivants

  • curriculum vitae,
  • lettres de recommandation éventuelles,
  • rapports éventuels effectués au cours de la scolarité ou plus tard,
  • projets/logiciels éventuels auxquelles le candidats a participé et dont le code librement accessibles.