Objectifs

-Comprendre le paradigme de la programmation Multicore
-Concevoir et développer des applications multicores
-Maîtriser les modèles de programmation parallèle
-Déboguer et profiler des applications Multicores

Programme

-Présentation de la programmation en Multicore

– Processus, threads et parallélisme

– Architecture en Hyperthreading.

– Architectures des processeurs

– Architectures NVidia et API.

– Mémoire partagée et mémoire distribuée.

– Synchronisation entre processus

– Importance de la modélisation

– Parallélisation des traitements

– Loi de Amdahl

– Utilisation des mécanismes asynchrones

– Les « singletons »

– Modification d’une application en Multicore

– Choix d’une architecture

– Choix entre multiprocessus et mult

– Application à base de threads

– Avantages de l’utilisation des threads

– Ordonnancer les threads

– Gérer les stacks et « call stack »

– Les déboggeurs multi-threads

– Les sections critiques, Mutex ou Sémaphores

– Le développement de « Thread safe »

– Usages du développement en approche multithread
Les APIs : threads avec Windows, Java, DOT Net, POSIX
Travaux pratiques
Création de threads et la synchronisation entre eux.

-Conditions de choix d’une approche multi-processus

– Les différents concepts de communication inter processus

– Techniques de Debugging multiprocess

– Avantage et inconvénients des techniques multi processus
Travaux pratiques
Gestion d’applications asynchrones

– Apports et objectifs de la programmation parallèle

– La librairie « OpenMP » C++

– Directives « OpenMP » vacants

– Utilisation des GPUs

– Cartes graphiques pour le calcul

-Kits de NVidia (CUDA) et ATI
Travaux pratiques
Paralléliser des algorithmes avec OpenMP. Utilisation de l’API
OpenCL.

Référence :  DEV028

Type de Stage : Pratique

Durée : 3 jours

Public concerné:

Développeurs, chefs de projets
techniques.

Prérequis:

Connaissances du langage Java,
C++ ou C#