-
-
-
-
-
-
-
HomeSite map
SoC/Offres d'emplois/Stages/2009-2010/ALSOC 1 Print page

Portage d’applications parallèles sur plateforme embarquée multicoeurs


Contexte :

Les systèmes multicoeurs tendent à devenir omniprésents, des serveurs de calculs aux systèmes embarqués. Mais le passage à ces systèmes ne garantit pas automatiquement un gain en performance. Il faut disposer de méthodes et d’outils logiciels permettant de déterminer et d’exploiter le parallélisme gros grain disponible dans les applications et entre les applications. De plus, pour que ces méthodes et outils soient utilisables par les programmeurs, il faut qu’ils soient le plus automatiques possibles et qu’ils ne nécessitent pas de connaître l’architecture du système sous-jacent. Par ailleurs, ils doivent permettre une portabilité aisée des applications parallélisées sur différents systèmes multicoeurs.


Des environnements de programmations parallèles existent intégrant des techniques de parallélisation statique (décisions de parallélisation prises à la compilation) et des techniques de parallélisation dynamique (décisions de parallélisation prises à l’exécution). La parallélisation statique s'avère efficace si l'application effectue un traitement régulier (d'un flot de données). Dans ce cas, il suffit de partager, équitablement, l'espace de données à traiter en autant de sous ensembles qu'il y a des processeurs sur la plateforme. La parallélisation dynamique (tasking) est nécessaire si le traitement est irrégulier, c'est-à-dire que le découpage de l'espace de données se fait progressivement et dépend du traitement, des données traitées, et éventuellement de la disponibilité des ressources matérielles, des conflits potentiels entre flots, et des conflits entre accès aux données, etc.


Ce stage s’inscrit dans le cadre du projet Européen TSAR (Tera-Scale ARchitecture). Ce projet vise la définition et l’implémentation d’une architecture de processeur multicoeurs, c’est à dire une architecture matérielle supportant la mémoire virtuelle, et fournissant un mécanisme de cohérence des caches garantie par le matériel. Cette architecture supporte des systèmes d’exploitation généralistes de type UNIX ou LINUX. Son originalité est d’utiliser un grand nombre de « petits » cœurs de processeurs RISC 32 bits, plutôt que quelques gros processeurs, pour minimiser la consommation énergétique. L’architecture doit donc être réellement « scalable » (pour atteindre 4096 processeurs sur une seule puce), tout en fournissant une mémoire partagée cohérente.


Afin de tester cette plateforme, nous avons besoin de porter des applications parallèles sur l'architecture TSAR. Nous utilisons deux environnements de programmation parallèle à mémoire partagée, OpenMP et Capsule.

  • OpenMP [1,2] est un environnement de programmation parallèle mixte statique/dynamique, qui propose un ensemble de pragmas et bibliothèques, pour C/C++ et Fortran, afin d'exprimer le parallélisme. Cet environnement est largement utilisé vu sa simplicité d'utilisation, puisque il s'agit d'une extension de langages de programmation séquentielle classiques.

  • Capsule [3] est un environnement de parallélisation dynamique qui propose un ensemble de primitives C pour paralléliser des codes C/C++. Le principe de base de Capsule est de procèder à un sondage des ressources matérielles (les coeurs) avant chaque décision de parallélisation, ce qui permet une exploitation efficace et optimisée des ressources matérielles de la plateforme.


Déroulement du stage :

Le but de ce stage est de porter les deux envrionnements, Capsule et OpenMP, ainsi que des applications parallèles, sur la plateforme multicoeurs TSAR.

Les étapes de ce stage :

  • Se familiariser avec l'architecture TSAR et les environnements de programmation parallèle OpenMP et Capsule.

  • Porter les environnements Capsule et OpenMP sur l’architecture multicoeurs TSAR.

  • Porter des applications en Capsule et OpenMP sur TSAR.

  • Evaluer les performances des versions parallèles des applications en terme de speedup par rapport à la version séquentielle.

  • Evaluer et analyser les performances de ces applications en fonction des paramètres de l'architecture, notamment le nombre de processeurs et les caractéristiques des mémoires caches.

  • Comparer les performances par rapport à une architecture multicoeurs généraliste (ex. : Intel Xeon).


Encadrants :

Assia Djabelkhir, Nathalie Drach, Karine Heydemann – UPMC, LIP6


Rémunération :

 

Ce stage sera rémunéré pendant toute la durée du stage.

Bibliographie :

[1] www.openmp.org

[2] Alejandro Duran. Tasking in OpenMP 3.0. Barcelona Supercomputing Center.

[3] P. Palatin, Y. Lhuillier, et O. Temam. CAPSULE: Hardware assisted parallel execution of component based programs. International Symposium on Microarchitecture (MICRO39), pages 247258, 2006.




LIP6 LIP6-SoC LIP6 CNRS UPMC