Développement C/C++ Perl et Python

 C/C++, programmer ses applications en Multicore

Objectifs de la formation

  • Maîtriser les enjeux de la programmation Multicore
  • Concevoir et développer des applications à base de threads et de processus
  • Maîtriser les modèles de programmation parallèle et les librairies disponibles
  • Déboguer et profiler des applications Multicore


Programme de la formation

Introduction

  • Enjeux de la programmation Multicore.
  • Tableau des technologies utilisables : processus, thread et parallélisme.
  • Description du fonctionnement d'un processeur.
  • Architecture en "Hyperthreading".
  • Architectures des processeurs INTEL et AMD.
  • Architectures NVidia et API.
  • Architecture en mémoire partagée vs mémoire distribuée.

Modélisation des applications

  • Importance des aspects modélisation.
  • Patterns de mise en parallèle des traitements.
  • Utilisation des mécanismes asynchrones.
  • Développer une nouvelle application : précautions et modélisation. Eviter les "singletons".
  • Modifier une application existante en Multicore.
  • Choix d'architecture : un compromis synchronisation et performance. Choix multiprocessus/multithreads.

Threads

  • Apport des threads dans une application industrielle.
  • Ordonnancement des threads.
  • Gestion des stacks et "call stack" dans les threads.
  • Débogueurs multithreads.
  • Gestion des objets de synchronisation : sections critiques, Mutex et Sémaphores.
  • Développer "thread safe".
  • API de threads TBB, Clik++, C++11, boost threads, pthreads.

Travaux pratiques

Threads et synchronisation en C/C++.

Processus

  • Espaces d'adressage des processus, organisation.
  • Critères de choix d'une approche multiprocessus.
  • Techniques de communication interprocessus (IPC).
  • Outils de debugging multiprocessus.
  • Avantage et inconvénients des techniques multiprocessus.

Travaux pratiques

Gestion de traitements asynchrones avec l'API C/C++.

La programmation parallèle

  • Apport et objectifs de la programmation parallèle.
  • La librairie "OpenMP" C++ (programmation mémoire partagée).
  • La librairie "OpenMPI" (programmation mémoire distribuée).
  • Utiliser les GPU des cartes graphiques pour le calcul.
  • Kits de NVidia (CUDA) et ATI.
  • La librairie "OpenAcc" pour la programmation GPU.
  • La librairie "OpenCL" pour la programmation parallèle CPU et GPU.

Travaux pratiques

Paralléliser des algorithmes avec "OpenMP" en C++. Utilisation de l'API OpenCL.

Synthèse et conclusion

Avenir du C++ avec le multicore.

Conclusion des techniques étudiées.

Please login to get access to the quiz
C++, développement d’applications graphiques en QT (Prev Lesson)
Back to Développement C/C++ Perl et Python
Public

Développeurs, architectes logiciels, chefs de projet.

Pré-requis

Bonnes connaissances de C ou de C++. Connaissances de base des concepts liés aux applications Multicore.