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 :
- 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.
- 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.
- 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.
- La programmation scientifique et l'algèbre linéaire numérique, absentes du catalogue.
- 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.