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.
Inter
Intra
Sur mesure
Cours pratique en présentiel ou en classe à distance
Formation dans vos locaux, chez nous ou à distance
Réf. MUC
3j - 21h
Vous souhaitez transposer cette formation, sans modification, pour votre entreprise ?
Formation à la carte
Vous souhaitez une formation adaptée aux spécificités de votre entreprise et de vos équipes ? Nos experts construisent votre formation sur mesure !
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.
Objectifs pédagogiques
À l’issue de la formation, le participant sera en mesure de :
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
Public concerné
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.
Vérifiez que vous avez les prérequis nécessaires pour profiter pleinement de cette formation en faisantce test.
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
Conclusion des techniques étudiées.
Avenir du C++ avec le multicore.
Modalités pratiques
Travaux pratiques
Les travaux pratiques seront réalisés en C/C++ sous Visual Studio en environnement Windows.
Modalités d'évaluation
Le formateur évalue la progression pédagogique du participant tout au long de la formation au moyen de QCM, mises en situation, travaux pratiques…
Le participant complète également un test de positionnement en amont et en aval pour valider les compétences acquises.
Avis clients
4,7 / 5
Les avis clients sont issus des évaluations de fin de formation. La note est calculée à partir de l’ensemble des évaluations datant de moins de 12 mois. Seules celles avec un commentaire textuel sont affichées.
RAPHAËL L.
22/04/24
5 / 5
Très intéressant.
Il reste quelques coquilles d’orthographe dans les diapos
RÉMI P.
22/04/24
5 / 5
Très satisfait de cette formation.
Effectivement la partie sur MPI n’était pas ce qui m’intéressait le plus car je ne vois pas de cas d’application actuellement.
Mais le reste était très intéressant, notamment sur le fonctionnement des CPU et de la lib OpenMP.
NADER O.
22/04/24
5 / 5
clair et concis avec un bon équilibre entre théorie et pratique.
J’ai pu combler une bonne partie des lacunes que j’avais sur le sujet et surtout d’avoir des cas pratiques en tête à tester.
EDOUARD S.
18/12/23
5 / 5
J’ai beaucoup apprécié la pédagogie et la disponibilité du formateur, ainsi que la qualité du support de cours.
Une seule remarque: la chapitre sur MPI est moins applicable à mon environnement de travail, et ce chapitre pourrait être raccourci en faveur d’un autre chpitre.
J’ai apprécié aussi les liens annexes.
QUANG MINH N.
18/12/23
5 / 5
Cours très complet, j’étais surtout intéressé par la découverte d’OpenMP à la base. J’en ressors très satisfait quant à mes attentes, et tout le reste du cours, avec lequel j’étais très peu familier, était bien expliqué et bien illustré avec de nombreux exemples.
DONALD M.
18/12/23
5 / 5
Tres pedagogique(quatilité des explications, exercices et rappel des notions de jours précédents et préréquis)
Pontuel
Sympathique et aimable
Confiant
JE LE RECOMMANDE !!
JÉRÔME F.
31/07/23
5 / 5
Contenu très intéressant! Par contre, la partie finale sur OpenCL est peut-être soit trop approfondie, soit pas assez (on comprend la logique sous-jacente, mais comme expliqué par le formateur, il faut plus de temps pour bien prendre en main ce sujet)
--> à enlever ou à approfondir pour les sessions futures?
ANTHONY B.
31/07/23
4 / 5
Balayage varié sur les différents solutions de programmation parallèle, les sujets plus accessibles (multithreading) sont approfondis et ceux plus complexes sont introduits sans trop détailler.
Peut-être montrer un exemple d’application utilisant des threads existante, au-delà des exercices (à portée plus limitée).
ALYSON R.
05/04/23
5 / 5
Enormement d’informations, surtout due au triplé POSIX/Windows/Linux. Seul Linux s’applique pour moi.
C’est intéressant de savoir que MPI existe, mais on y a passé pas mal de temps comparé à l’applicabilité en entreprise. Après je dis ça parce que je sais que je n’en aurais jamais besoin dans mon travail. Si ça se trouve c’est plus utilisé que je ne l’imagine.
CÉDRIC M.
05/04/23
5 / 5
Le contenu et la présentation sont très intéressants
MAXIME P.
18/01/23
5 / 5
Contenu de la formation et formateur très agréable.
XAVIER C.
21/11/22
5 / 5
Très bien dans l’ensemble, il m’a peut être manqué un peu de pratique sur les parties communication inter processus, et openCL
YITIAN Z.
21/11/22
4 / 5
très bonne explication sur les différentes techniques comme les threads, openmp, opencl et MPI.
les TPs sont très utiles qui aident vraiment la compréhension
DAMIEN D.
21/11/22
5 / 5
Très bien.
Compatibilité Windows/Linux très appréciable avec à chaque fois, si possible, les API de l’OS ou en standard c++.
HECTOR M.
21/11/22
4 / 5
Concernant le contenu, pour moi c’est très generale. J’aurais aimé plutot se concentrer sur un seule sujet.
Je trouve que la méthodologie de la partie pratique était bien, on avait un certain temps pour faire le TP et après on avait la correction faites de manière simple mais pedagogique. Personnelment j’apprends plus rapidement en pratique qu’en theorie.
DENIS F.
21/11/22
5 / 5
Formateur très clair et à l’écoute,
Merci beaucoup
FRANCINE S.
07/03/22
5 / 5
J’ai préféré la partie multithreads
EMMANUEL J.
07/03/22
4 / 5
Super formation. Certains sujets mériteraient d’être plus approfondis (mais impossible dans le temps imparti). Peut-être scinder la formation en 2 ? (je pense notamment à MPI et GPGPU).