Architectures multicœurs et fondements du parallélisme
Évolution des architectures multicœurs (Intel, AMD, ARM, Apple Silicon).
Architectures hybrides CPU/GPU/NPU : principes et enjeux.
Fonctionnement interne d’un processeur multicœur : pipeline, cache, cohérence mémoire.
Parallélisme matériel et logiciel : instruction, thread, tâche, donnée.
Synchronisation et cohérence mémoire : verrous, sections critiques, atomicité.
Panorama des outils et bibliothèques : OpenMP, TPL, multiprocessing, CUDA, OpenCL, SYCL.
AtelierObservation du parallélisme sur la machine locale (Windows/Linux).Mesure de performance entre exécution séquentielle et multithread (C++ ou C#).Visualisation de l’utilisation CPU et des threads avec Visual Studio Profiler ou Perf.Conception, threads et processus
Modélisation logicielle d’applications parallèles : tâches, données, dépendances.
Programmation multithread moderne :
- Threads C++ (std::jthread, std::async, std::future).
- Threads .NET (Task, Parallel.For, async/await).
- Threads Python (threading, concurrent.futures).
Synchronisation : mutex, sémaphores, std::atomic, Monitor, lock.
Communication inter-processus (IPC) : mémoire partagée, pipes, gRPC (aperçu).
Comparatif multithread / multiprocess : performances et isolation mémoire.
Atelier Création et synchronisation de threads dans les trois langages (exécution parallèle de calculs).Implémentation d’une file de tâches partagée sécurisée (thread-safe queue).Test de synchronisation à l’aide de mutex et sémaphores.Débogage d’une application multithread (Visual Studio / VS Code).Programmation parallèle et GPU
Principes de la programmation parallèle : SPMD, SIMD, MIMD.
Parallélisation de boucles et traitements de données :
- OpenMP (C++), TPL/PLINQ (.NET), multiprocessing (Python).
Utilisation des GPU pour le calcul : CUDA, OpenCL 3.0, SYCL/oneAPI.
Introduction à la vectorisation : NEON (ARM), AVX-512 (Intel).
Mesure et optimisation des performances parallèles.
Bonnes pratiques de conception multicœur et gestion des ressources.
AtelierParallélisation d’un algorithme (tri, filtrage d’image, somme matricielle) avec OpenMP et TPL.
Exécution d’un kernel simple sur GPU via OpenCL (calcul de pixels).
Comparaison de performances CPU vs GPU.
Analyse de la scalabilité avec Nsight Systems ou Intel VTune (démonstration guidée).Synthèse et conclusion
Récapitulatif des approches étudiées : threads, processus, parallélisme sur CPU et GPU.
Bonnes pratiques de conception et d’optimisation multicœur.
Évolutions des langages et outils (C++23, .NET 8, Python 3.12).
Lien avec l’intelligence artificielle : les techniques de parallélisation, de calcul GPU et de vectorisation constituent la base des frameworks d’IA modernes (TensorFlow, PyTorch, etc.).
Perspectives : montée en puissance des architectures hétérogènes et des environnements cloud/edge.