Introduction
Enjeux de la programmation en Multicore pour l’avenir
Technologies à utiliser : processus, threads et parallélisme
Fonctionnement d’un processeur
Architectures :
– En « Hyperthreading »
– Des processeurs INTEL™ et AMD™
– NVidia™ et API™
Aspects synchronisation
Modéliser les applications
Importance de la modélisation
Parallélisation des traitements
Loi de Amdahl (ex : calcul)
Utiliser les mécanismes asynchrones
Développement d’une nouvelle application
Les « singletons » (ne pas utiliser)
Modification d’une application en Multicore
Choisir une architecture (un compromis synchronisation et performance)
Choisir entre multiprocessus et multithreads
Threads
Système à base de threads
Existence des threads dans les systèmes et les langages (ex : Java, .NET et C++)
Qu’est-ce que les threads apportent dans une application industrielle ?
Ordonnancer les threads dans les systèmes (principe du « round robin »)
Gérer les stacks et « call stack »
Les déboggeurs multi-threads
Gérer les objets de synchronisation tels que les sections critiques, Mutex ou Sémaphores
Le développement de « Thread safe »
Usages du développement en approche multithread
Les APIs :
– De threads avec Windows
– Java
– DOT Net
– De POSIX
Les différents processus
Étendues d’adressage des processus et comment les organiser
Conditions de choix d’une approche multi-processus
Les différents concepts de communication inter processus (IPC)
Techniques de Debugging multiprocess et les nouveaux outils comme Visual Studio 2008
Avantage et inconvénients des techniques multi processus
Les « Domain » DOT Net
Programmation parallèle
Apports et objectifs de cette programmation
« Parallel FX » :
Bibliothèque DOT Net afin de paralléliser
Architecture PFX et philosophie
Éléments TPL et PLINQ
La librairie « OpenMP » C++
Directives « OpenMP » vacants
Utilisation des GPUs
Cartes graphiques pour le calcul
Kits de NVidia (CUDA) et ATI
Exemple :
– D’applications utilisant les bibliothèques
– De code et commentaires
Conclusion de la programmation en Multicore
Conclusion des techniques étudiées
Quel est l’avenir de C++ avec le Multicore ?
Synthèse des différentes approches (Design, threads, multiprocessus et programmation parallèle)