Image de NordWood Themes

C/C++, Programmer vos applications en MultiCore
 

Objectifs

Vous découvrirez les architectures Multicore et leur programmation, les techniques de mise en œuvre d'une approche multithread ou multiprocessus et les langages dédiés à la programmation parallèle. Vous étudierez également les contraintes en matière de synchronisation d'accès aux données et les précautions à prendre.

A qui s'adresse cette formation

Participants :

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.

Contenu du cours

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
     

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
     

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
     

Synthèse et conclusion

  • Conclusion des techniques étudiées.

  • Avenir du C++ avec le multicore.

Modalités d’évaluation des acquis

L'évaluation des acquis se fait :

  • En cours de formation, par des études de cas (fil rouge) ou travaux pratiques,

  • Cette formation ne fait pas l’objet d’une évaluation des acquis en fin de formation.

TechnoWide

3 rue du Golf

Parc Innolin

CS 60073

33701 MERIGNAC CEDEX

Bordeaux

  • LinkedIn Social Icon
© 2020 TechnoWide - tous droits réservés