Projet de recherche doctoral numero :3254

Description

Date depot: 1 janvier 1900
Titre: Parallélisation adaptative pour les applications embarquées haute-performance
Directrice de thèse: Nathalie DRACH-TEMAM (LIP6)
Directrice de thèse: Karine HEYDEMANN (LIP6)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Non defini

Resumé: Les systèmes embarqués haute-performance (téléphonie mobile, applications médicales, électronique grand public,...) contiennent de plus en plus de fonctionnalités, et des fonctionnalités de plus en plus complexes demandant une performance accrue. En conséquence, ces systèmes incorporent de plus en plus souvent des processeurs, et des processeurs de plus en plus performants et sophistiqués. Or, le domaine des processeurs haute-performance (qu'ils soient généralistes ou embarqués) est en train de subir un bouleversement profond : jusqu'à récemment encore, la performance des processeurs progressait essentiellement grâce à l'augmentation régulière de la fréquence de fonctionnement (loi de Moore). Mais les principaux constructeurs de processeurs considèrent que les progrès en performance vont dorénavant être obtenus essentiellement grâce à des architectes multicoeurs (à plusieurs processeurs) et que cela passera par le parallélisme. En conséquence, à terme, cela signifie que la performance d'un programme ne progressera, avec les nouvelles générations de processeurs, que si ce programme a été parallélisé et optimisé pour ces architectures multiprocesseurs / multicoeurs. Il faut donc 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. Par ailleurs, l'analyse et l'optimisation statiques du code (à la compilation) ont montré leurs limitations : un grand nombre d'informations indispensables à une génération efficace de code ne sont connues qu'à l'exécution (notamment, le comportement des accès mémoire et des instructions de contrôle). Ainsi pour générer des programmes efficaces et des placements de flots et données adaptés, il faut pouvoir exploiter le comportement dynamique de l'application directement à l'exécution. Des environnements de programmations parallèles existent intégrant des techniques de parallélisation statique (décisions d’optimisations prises à la compilation) et des techniques de parallélisation dynamique (décisions d’optimisations prises à l'exécution). L'avantage des techniques dynamiques, même si pour le moment, peu d'environnements de ce type existent, est qu'elles peuvent a priori s'adapter, à l'exécution, aux besoins des applications, à la disponibilité des ressources, aux conflits potentiels entre flots, etc. Mais la gestion d'applications en parallèle ne pose pas uniquement la question d'une bonne occupation des processeurs, elle pose également le problème de l'utilisation efficace de la mémoire. En effet, l'exécution simultanée de plusieurs applications, ou de plusieurs tâches parallèles d'une même application, peut générer des échecs supplémentaires sur les caches partagés entre les processeurs du système. De plus, si des tâches communiquent, il faut également rajouter des délais supplémentaires dus aux communications et synchronisations. Ces différents phénomènes sont préjudiciables aux performances des systèmes multicoeurs. Dans ce projet, nous proposons d'explorer une nouvelle approche de parallélisation adaptative permettant d'intégrer à l'exécution le placement des flots, pas uniquement en fonction de la disponibilité des ressources, mais également en fonction du comportement des accès mémoire. Cette parallélisation/optimisation doit être transparente pour le programmeur. Elle pourra être réalisée via des informations récupérées de l’exécution (exemple : compteurs matériels) et avec l'assistance du système d'exploitation et/ou du compilateur. Les fonctions de placement seront optimisées en fonction de la performance, mais pourront également intégrer le critère consommation. En effet, ce critère est fondamental pour les applications embarquées et fortement dépendant, justement, des accès mémoire.

Doctorant.e: Drebes Andi