Aller au contenu

3 · Socle technique

Cette partie contient ce qu'il faut maîtriser et que la maquette n'enseigne pas, ou pas assez. C'est la partie la plus générale du document : elle est lisible indépendamment de l'ENSIIE et fonctionne comme un cours de HPC autonome.

Pourquoi cette partie existe

Le cursus FISA donne cinq UE techniques en trois ans, soit environ 170 heures encadrées de calcul intensif. C'est un socle réel, mais étroit. Il laisse cinq trous :

  1. L'optimisation mono-nœud — architecture, cache, SIMD — parce qu'aucune UE de la maquette FISA ne traite l'architecture matérielle, et que COAV35 aborde le sujet du seul point de vue du compilateur.
  2. Les modèles de performance formalisés — le roofline en particulier, qui n'apparaît nulle part dans la brochure alors qu'il est le langage commun du domaine.
  3. L'administration de cluster et Slurm, et les systèmes de fichiers parallèles : ni l'un ni l'autre n'ont d'UE en FISA. DEVO35 donne le réflexe d'infrastructure as code, pas l'ordonnanceur ni le stockage.
  4. La programmation scientifique et l'algèbre linéaire numérique, absentes du catalogue.
  5. L'outillage de compétition — benchmarks du Top500, construction de piles logicielles, mesure de puissance, solveurs de référence.

Les dix chapitres qui suivent comblent ces cinq trous. C'est, pour un apprenti, l'autre moitié de la formation.

Les dix chapitres

N° Chapitre Comble le manque de ⏱
1 Modèles de performance Roofline, Amdahl, ECM, bornes de communication 30 h
2 Architecture et mémoire L'architecture matérielle, sans UE en FISA : pipeline, cache, NUMA, SIMD 35 h
3 MPI en profondeur Complément de PRPA23 : réglage, topologies, RMA 25 h
4 OpenMP et threads Complément d'ICPA24 et de PRCV24 : tâches, modèles mémoire, vérification 25 h
5 GPU et hétérogène Complément de PGPU35 : NCCL, entraînement distribué, portabilité 30 h
6 Entrées-sorties et stockage Le stockage parallèle, sans UE en FISA : IO500, formats, burst buffers 20 h
7 Build et environnement Spack, EasyBuild, modules, conteneurs, Fortran 30 h
8 Outils de mesure Le catalogue complet, avec quand utiliser quoi 25 h
9 Solveurs et algèbre linéaire BLAS, LAPACK, PETSc, Krylov, préconditionnement 40 h
10 Énergie et efficacité Complément de GIIG35 : RAPL, power cap, Green500 15 h

Total : environ 275 heures. Ce n'est pas un programme à exécuter en entier. La méthode de sélection est dans Comment choisir.

Ordre de lecture

Les chapitres 1 et 2 sont prioritaires et se lisent dans l'ordre. Ils constituent le socle conceptuel : sans le modèle roofline et sans la hiérarchie mémoire, rien du reste n'a de sens.

Ensuite, trois ordres possibles selon votre objectif :

Pour une compétition : 1, 2, 8 (mesurer), 7 (construire), 3 et 5 (les deux modèles de programmation qui portent les benchmarks), 10 (le budget électrique), 6 (si IO500 est au programme).

Pour une carrière en optimisation : 1, 2, 8, 4, 3, 5, 9.

Pour une carrière en simulation numérique : 1, 9, 2, 3, 6, 5.

Le fil conducteur

Les dix chapitres répondent en réalité à une seule question, déclinée : quelle est la borne, et où en suis-je par rapport à elle ?

  ┌─────────────────────────────────────────────────────────┐
  │  1. Quelle est la borne ?          → chapitres 1, 2      │
  │  2. Où en suis-je ?                → chapitre 8          │
  │  3. Qu'est-ce qui m'en éloigne ?   → chapitres 3, 4, 5, 6│
  │  4. Comment construire pour mesurer ? → chapitre 7       │
  │  5. Quel algorithme choisir ?      → chapitre 9          │
  │  6. À quel coût énergétique ?      → chapitre 10         │
  └─────────────────────────────────────────────────────────┘

C'est la boucle du métier. Tout le reste est du détail technique.

Trois principes qui traversent la partie

1. Une borne avant une mesure

Un chiffre de performance sans borne de comparaison ne veut rien dire. 40 GFLOPS est excellent sur un noyau limité par la mémoire et catastrophique sur un GEMM. Toujours calculer la borne avant de mesurer : pic de calcul, bande passante STREAM, ou performance d'une bibliothèque de référence.

2. Une hypothèse avant une modification

Avant de changer une ligne, écrivez ce que vous attendez : « en passant en SoA, je devrais permettre la vectorisation et gagner un facteur proche de 4 ». Puis mesurez. L'écart entre la prédiction et le résultat est l'endroit où l'on apprend quelque chose. Optimiser sans hypothèse est du bricolage : parfois ça marche, et on ne sait pas pourquoi.

3. Une modification à la fois

Si vous changez deux choses et que le résultat empire, vous ne saurez pas laquelle est coupable. C'est fastidieux et c'est la seule méthode qui fonctionne.


Premier chapitre : Modèles de performance.