Architecture et Programmation Parallèles
Cours d’architecture et de programmation parallèles (DMI/FST/UCAD) : caches et cohérence, synchronisation, NUMA, et des labs Python mesurés, séance par séance.
Pourquoi et comment les machines deviennent parallèles : mur de la fréquence, taxonomie de Flynn, hiérarchie mémoire et caches, accélération, lois d’Amdahl et de Gustafson, cohérence de cache (MSI, MESI) et faux partage, synchronisation (verrous, interblocage, barrières), architectures NUMA et à répertoire. Les labs se font en Python sous Jupyter (Anaconda) : threading, multiprocessing, NumPy, avec des mesures réelles. Référence : J. L. Hennessy et D. A. Patterson, Computer Architecture: A Quantitative Approach, 6e éd., 2017.
Niveaux : M1, M2 · Domaine : Programmation, Web & Mobile
Objectifs
- expliquer pourquoi les machines deviennent parallèles (mur de la fréquence, taxonomie de Flynn)
- mesurer une accélération et l’interpréter avec les lois d’Amdahl et de Gustafson
- expliquer la cohérence de cache (MSI, MESI) et repérer un faux partage
- synchroniser des tâches (verrous, barrières) et éviter l’interblocage
- comparer les architectures NUMA et à répertoire
- écrire et mesurer des programmes parallèles en Python (threading, multiprocessing, NumPy)
Prérequis
- Programmation en Python ; notions d’architecture des ordinateurs (processeur, mémoire, caches).
Séances
| Séance | Contenu | Travaux |
|---|---|---|
| Séance 1 — Fondements de l’architecture parallèle | fondements de l’architecture parallèle. | Slides · TD · Notebook · Notebook · Notebook · Code de départ (147 Ko) |
| Séance 2 — Cohérence de cache et protocoles | cohérence de cache et protocoles. | Slides · TD · Notebook · Code de départ (36 Ko) |
| Séance 3 — Programmation parallèle avancée (synchronisation) | programmation parallèle avancée (synchronisation). | Slides · TD · Notebook · Code de départ (7 Ko) |
| Séance 4 — Architectures distribuées et NUMA | architectures distribuées et NUMA. | Slides · TD · Notebook · Code de départ (49 Ko) |