
-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
-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
Développeurs, chefs de projets
techniques.
Connaissances du langage Java,
C++ ou C#