Formation Informatique | Formation Management
Informatique » Développement logiciel » Formation Java / JEE »

Programmer vos applications en Multicore


Formation programmation multicore

Stage pratique
Eligible au DIF

Réf : MUC

Prix 2012 : 1650 € H.T.
Durée :  3  jours
Cliquer sur une session pour réserver:

Paris
18 juin 12, 8 oct. 12

Toutes les sessions  

Lyon,Aix
Nantes,Rennes
Toulouse,Bordeaux
Bruxelles,Strasbourg
Lille,Geneve
Sophia-antipolis,Luxembourg
:
Nous contacter
Filières métiers:

Développeur Java
Développeur C / C++
Développeur C / C++ programmation parallèle

version pdf imprimer Faire suivre


Les objectifs de cette formation programmation multicore


Ce cours vous permettra de comprendre 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 verrez également les contraintes en matière de synchronisation d'accès aux données et les précautions à prendre.

Pré-requis de cette formation programmation multicore

Bonnes connaissances d'un des 3 langages objet utilisés dans le cours (Java, C#, C++). Connaissances de base des concepts liés aux applications multicore.

Travaux pratiques

L'outil Open source BOUML sera utilisé pour la modélisation UML, Visual Studio express(tm) pour la manipulation des langages C# et C++, NetBeans(tm) 6.x pour Java. Les exemples seront démontrés grâce aux langages UML, Java, C++ et Dot Net.


Programme de cette formation programmation multicore

Introduction

- Les enjeux de la programmation Multicore dans les années à venir.

- Tableau général des technologies utilisables : processus, threads et parallélisme.

- Description et rappel du fonctionnement d'un processeur.

- Les architectures en " Hyperthreading ".

- Les architectures des processeurs INTEL™ et AMD™.

- Les architectures NVidia™ et API™.

- Les aspects synchronisation à prévoir : cas généraux.


Modélisation des applications

- Importance des aspects modélisation.

- Parallélisation des traitements (ex : calcul).

- Utilisation des mécanismes asynchrones : processus, threads…

- Développer une nouvelle application : précautions et modélisation.

- Eviter les " singletons ".

- Modifier une application existante en Multicore : problèmes rencontrés.

- Choix d'architecture : un compromis synchronisation et performance.

- Choix multiprocessusus/multithreads.


Threads

- Organisation d'un système à base de threads.

- Les threads dans les systèmes et les langages (exemple : Java, .NET et C++).

- Apport des threads dans une application industrielle.

- Ordonnancement des threads dans les systèmes : technique du " round robin ".

- Gestion des stacks et " call stack " dans les threads.

- Les débogueurs multithreads : ex Visual Studio et NetBeans™.

- Gestion des objets de synchronisation : sections critiques, Mutex et Sémaphores.

- Développer " Thread safe ".

- Règles pour développer en approche multithread.

- Les API de threads avec Windows, Java et DOT Net.

- Les API de POSIX.

Travaux pratiques
Threads et synchronisation en DOT Net, Java et C++.

Processus

- Espaces d'adressage des processus, organisation.

- Critères de choix d'une approche multiprocessus.

- Ensemble des techniques de communication interprocessus (IPC).

- Techniques de debugging multiprocessus, nouveaux outils (ex : Visual Studio 2005).

- Avantage et inconvénients des techniques multiprocessus.

- Particularité : les " Domain " DOT Net.

Travaux pratiques
Gestion de traitements asynchrones avec l'API Windows.

La programmation parallèle

- L'apport et les objectifs de la programmation parallèle.

- " Parallel FX " la bibliothèque DOT Net pour paralléliser.

- Architecture PFX et philosophie.

- Composants TPL et PLINQ.

- La librairie " OpenMp " C++.

- Directives " OpenMP " disponibles.

- Utiliser les GPU des cartes graphiques pour le calcul.

- Les kits de NVidia (CUDA) et ATI.

- Exemple d'applications utilisant les bibliothèques.

- Exemple de code et commentaires.

Travaux pratiques
Paralléliser des algorithmes avec PFX C#. Paralléliser des algorithmes avec " OpenMP " en C++.

Synthèse et conclusion

- Conclusion des techniques étudiées.

- L'avenir de C++ avec le multicore.

- Synthèse des approches de Design, threads, multiprocessusus et programmation parallèle.