HPC

HPC sur un nœud de calcul

Description : Calcul parallèle sur un ordinateur multicoeurs par multithreading, vectorisation et optimisation sérielle. Ce cours présente l’architecture générique des CPU modernes (multi-coeurs, unités SIMD, hiérarchie de mémoires caches), puis la gestion efficace des accès mémoire pour exploiter efficacement les caches, puis la vectorisation des boucles pour profiter des unités SIMD, et enfin le multithreading avec OpenMP pour exploiter tous les coeurs de la machine. Des aspects de programmation et d’algorithmique parallèle constituent l’essentiel du cours, accompagnés de concepts de mesure et d’analyse de performance. Les TD et TP constituent plus de la moitié du volume du cours.

Acquis d’apprentissage : A l’issue de ce cours, les élèves sauront concevoir et implanter un code de calcul multithreadé vectorisable au sein de chaque thread, et réalisant un maximum d’accès aux données en mémoire cache, puis le compiler avec les options de compilation les plus adaptées, afin de tirer un maximum de performances d’un processeur multi-coeurs moderne.

Modalités d’évaluation : Examen écrit 1h30 (rattrapable) et compte-rendus de TP (non rattrapables).

Compétences évaluées :

  • Développement
  • Modélisation

Responsable de cours : Stéphane Vialle

Identifiant Geode : SPM-INF-012


CM :

  1. Cours d’architecture des CPU multi-coeurs et des caches (1.5 h)
  2. Cours de compilation optimisée et de vectorisation (1.5 h)
  3. Cours de mesure et d’analyse de performances (1.5 h)
  4. Cours d’OpenMP et de bibliothèques BLAS (3.0 h)
  5. Cours d’algorithmique parallèle (1.5 h)

TD :

  1. TD d’optimisation sérielle et de vectorisation (1.5 h)
  2. TD de programmation OpenMP (1.5 h)

TP :

  1. TP d’optimisation sérielle et de vectorisation (3.0 h)
  2. TP de programmation OpenMP (3.0 h)
  3. TP d’algorithmique et de programmation parallèle optimisée (3.0 h)