Aller au contenu principal
  • Cours pratique
  • Informatique

Formation Programmation Multicœur et Parallèle

Optimiser vos applications en vous appuyant sur le parrallélisme

Une formatrice accompagne deux participants penchés sur leurs notes, en salle de formation
Durée
3 jours
Niveau
Intermédiaire
Modalités
Distanciel

Objectifs pédagogiques

À l’issue de la formation, les participants seront capables de :

  • Comprendre les architectures multicœurs, hétérogènes (CPU/GPU/NPU) et leurs implications logicielles.
  • Concevoir et modéliser des applications parallèles performantes et sûres.
  • Maîtriser les techniques modernes de programmation multithread, asynchrone et parallèle.
  • Exploiter les frameworks et bibliothèques contemporains (C++, .NET, Python, CUDA, OpenCL, SYCL).
  • Déployer, profiler et optimiser des applications multicœurs et massivement parallèles.

Objectifs opérationnels

À l’issue de la formation, le participant sera capable de :

  • Concevoir et développer une application capable d’exploiter efficacement plusieurs cœurs.
  • Choisir la bonne approche de parallélisation (threads, tâches, GPU).
  • Mettre en œuvre des mécanismes de synchronisation et d’exécution asynchrone.
  • Diagnostiquer et corriger les problèmes de performance liés au parallélisme.

Programme

Contenu du cours

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.

Travaux pratiques

L'outil Open source BOUML sera utilisé pour la modélisation UML, Visual Studio express(tm) pour la manipulation des langages C# et C++, NetBeans(tm) 6.x pour Java. Les exemples seront démontrés grâce aux langages UML, Java, C++ et Dot Net.

Programme mis à jour le 28/10/2025

Formations liées