Lionel BOILLOT

Ingénieur-Docteur Calcul Scientifique HPC


Je m'intéresse à toute la chaîne permettant une simulation numérique en parallèle. Les compétences associées sont complémentaires : calcul scientifique et HPC (High-Performance Computing), provenant d'une formation transverse en mathématiques appliquées et informatique.

L'optimisation d'un code numérique commence par l'étude approfondie de son algorithme, interviennent ensuite la granularité du parallélisme et l'architecture machine disponible, pour finir par l'étape la plus critique : l'implémentation et ses possibilités multiples.

Schémas numériques

Modéliser mathématiquement les problèmes physiques par des équations, puis discrétiser pour obtenir des sytèmes linéaires Ax=b.
En particulier, la méthode de Galerkin discontinu, DGM (Discontinuous Galerkin Method), se traduit par des algorithmes orientés HPC.

Algèbre linéaire

Résoudre les problèmes Ax=b, de façon directe en inversant la matrice ou itérative à travers des solveurs dédiés, en séquentiel ou parallèle.
Une dernière innovation majeure concerne les méthodes multigrille algébrique AMG (Algebraic MultiGrid), dépassant l'efficacité de Krylov.

Optimisations matérielles

Utiliser les capacités de calculs avancés intrinsèques à l'architecture machine, tout en favorisant la cohérence de la mémoire cache.
Les processeurs x86 permettent par exemple une vectorisation au travers des instructions SIMD (Single Instruction on Multiple Data).

Programmation parallèle

Permettre à un programme de s'exécuter sur plusieurs ordinateurs en même temps. Une implémenttaion classique repose sur de l'hybride MPI/OpenMP.
Un nouveau paradigme de parallélisme de tâches permet de dédier la gestion des ressources à un support d'exécution runtime

Utilisation d'accélérateurs

Traiter une partie des calculs hors du processeur CPU pour gagner en rapidité, par example par la programmation sur cartes garphiques, GPGPU.
Très récemment, l'architecture MIC (Many-Integrated Cores) des Intel Xeon Phi annonce les mêmes performances, sans avoir à utiliser CUDA.

------------------------------------------

Outils de génie logiciel

  • Partitionnement de maillage par (Par)Metis ou (PT-)Scotch
  • Visualisation et post-traitement des données avec ParaView
  • Entrée/sorties I/O parallèles et solutions Big Data
  • Profiling mémoire et exécution parallèle par VTune
  • Gestionnaire de versions de code avec Git ou SVN
  • Compilation intelligente et portable par CMake