Rééquilibrage de charge dans les solveurs hiérarchiques pour machines massivement parallèles

par Paul Beziau

Projet de thèse en Informatique

Sous la direction de Raymond Namyst.

Thèses en préparation à Bordeaux , dans le cadre de École doctorale de mathématiques et informatique (Talence, Gironde) , en partenariat avec Laboratoire bordelais de recherche en informatique (laboratoire) et de Supports et Algorithmes pour les applications numériques hautes performances (SATANAS) (equipe de recherche) depuis le 26-11-2018 .


  • Résumé

    Avec l'évolution radicale des architectures cette dernière décenie, et notamment l'arrivée des architectures manycore, les paradigmes combinant MPI et programmation par tâche ne permettent plus d'exposer assez de parallélisme sur des machines comportant potentiellement des millions de cœurs de calcul. Il est donc nécessaire d'extraire encore plus de parallélisme, en vectorisant le code ou en parallélisant avec openMP des noyaux de calcul jusque-là séquentiels, par exemple. Conjointement à ces efforts en termes de parallélisme pour exploiter au mieux la puissance de calcul disponible, l'introduction récente de techniques de compression de type matrices hiérarchiques a par ailleurs permis de réduire considérablement les temps de calculs et la mémoire nécessaires. Bien que l'on contate d'ores-et-déjà des gains de plusieurs ordres de grandeur, ces techniques de compression introduisent de véritables problèmes de charge entre les différents processus. Cela rend ainsi le passage à l'échelle particulièrement délicat, et nécessite à nouveau de faire évoluer le modèle de programmation pour redistribuer la charge, par exemple en introduisant du parallélisme de type MPI au sein des noyaux les plus coûteux. La décision (statique ou dynamique) de redistribuer ou non un noyau de calcul, et le dimensionnement de ces sections parallèles constituent quelques-uns des défis de taille pour concevoir un solveur hiérarchique massivement parallèle. Avec l'arrivée des machines de classe exaflopique, d'une complexité inégalée, et l'augmentation de la taille des problèmes simulés, il apparaît donc indispensable d'améliorer notre modèle de programmation. S'assurer que l'on exploite correctement des nœuds manycore grâce à de nouvelles sources de parallélisme intra et inter-nœud, et que la charge est harmonieusement répartie parmi l'ensemble de ces nœuds constituent les objectifs de cette thèse.

  • Titre traduit

    Load balancing in hierarchical solvers on manycore architectures


  • Résumé

    With the tremendous evolution of manycore architectures this last decade, programming paradigms combining MPI and task programming no longer allow to expose enough parallelism on current supercomputers which feature millions of cores. It is therefore necessary to extract every potential source of parallelism, by aggressively vectorizing the code or by introducing threads inside every compute kernel. In conjunction with these efforts, the recent introduction of compression techniques (use of hierarchical matrices) has significantly decreased the overall computation time of matrix factorization algorithms by several orders of magnitude. As a counterpart, these methods also introduce strong load balancing issues, due to large and unpredictable completion times between tasks. To ensure scalable performance across manycore architectures, we must therefore develop new mechanisms to adaptively split tasks and balance computation load across compute nodes (ie. using MPI), to dynamically assign subsets of set of cores to parallel tasks, and to find prediction models to guide the scheduling heuristics. In this thesis, we will investigate all these topics in the context of a H-MATRIX solver developed at CEA.