Accueil > Développement informatique et DevOps > C/C++ : programmer ses applications en Multicore
Formation #DEV36

Formation C/C++ : programmer ses applications en Multicore

Durée : 4 jours

Code : DEV36


Prochaines dates programmées :

Du 30 Avril au 03 Mai 2024

Du 06 au 09 Août 2024

Du 17 au 20 Déc. 2024

Fin d'Inscription :
Le Bulletin d'Inscription doit être rempli, cacheté, signé et envoyé par email : Au minimum 15 JOURS OUVRÉS avant la date de formation.
Si vous avez un besoin URGENT et que vous souhaitez une date de formation plus proche que les sessions programmées (minimum 15 à 20 jours ouvrés à date de votre demande)

Objectifs

  • Découvrir les architectures Multicore et leur programmation
  • Connaitre les techniques de mise en œuvre d'une approche multithread ou multiprocessus
  • Etre en mesure de programmer ses applications en Multicor
Programme
1/ Introduction
  • Appréhender les enjeux de la programmation en Multicore
  • Les technologies utilisables : processus, threads et parallélisme
  • Fonctionnement d’un processeur
  • Les architectures en « Hyperthreading »
  • Les architectures des processeurs INTEL et AMD
  • Les architectures NVidia et API
  • Les aspects synchronisation
  • Architecture en mémoire partagée vs mémoire distribuée
2/ Modéliser les applications Multicore
  • Appréhender l'importance de la modélisation
  • Parallélisation des traitements
  • Les mécanismes asynchrones
  • Précautions et modélisation d'une nouvelle application
  • Ne pas utiliser les « singletons »
  • Mettre à jour une application existante en Multicore
  • Choisir une architecture (un compromis synchronisation et performance)
  • Choisir entre multiprocessus et multithreads
3/ Threads
  • Organisation d'un système à base de threads
  • Les threads dans une application industrielle : apport
  • Ordonnancer les threads dans les systèmes (principe du « round robin »)
  • Gérer les stacks et « call stack »
  • Les déboggeurs multi-threads
  • Gérer les objets de synchronisation (sections critiques, Mutex ou Sémaphores)
  • Développement de « Thread safe »
  • Les APIs de threads :
  • TBB
  • Clik++
  • C++11
  • boost threads
  • pthreads
4/ Les processus
  • Espaces d'adressage des processus, organisation
  • Conditions de choix d’une approche multi-processus
  • Les différents concepts de communication inter processus (IPC)
  • Techniques de Debugging multiprocess
  • Présentation des avantages et des inconvénients des techniques multiprocess
5/ Programmation parallèle
  • Présentation des apports et des objectifs de cette programmation
  • Directives « OpenMP » C++
  • La librairie "OpenMPI"
  • Utilisation des GPUs et des cartes graphiques pour le calcul
  • Kits de NVidia (CUDA) et ATI
  • La librairie "OpenAcc"
  • La librairie "OpenCL"
6/ Synthèse et conclusion
  • Conclusion des techniques étudiées
  • C++ avec le Multicore : Quel avenir
  • Synthèse des différentes approches (Design, threads, multiprocessus et programmation parallèle)
Approche Pédagogique

Approche Pédagogique

  • Pédagogie très opérationnelle fondée sur l'alternance entre théorie et pratique
  • Cas pratiques
  • Remise d’outils
  • Echanges d’expériences
Public cible

Public cible

  • Développeurs
  • Architectes logiciels
  • Chefs de projet
Dates

Dates

  • Du 30 Avril au 03 Mai 2024
  • Du 06 au 09 Août 2024
  • Du 17 au 20 Déc. 2024
  • Fin d'Inscription :
    Le Bulletin d'Inscription doit être rempli, cacheté, signé et envoyé par email : Au minimum 15 JOURS OUVRÉS avant la date de formation.