![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
|
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.
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 :
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.
|