Parallélisation dynamique pour multicoeurs : intégrer explicitement le comportement des accès mémoire
Encadrantes :
Assia Djabelkhir, Nathalie Drach, Karine Heydemann – UPMC, LIP6
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 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, aux conflits entre accès aux données, etc. Dans ce cadre, nous utilisons l’environnement de parallélisation dynamique Capsule qui s'adapte automatiquement aux nombres de ressources matérielles disponibles (processeurs) du système sous-jacent.
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.
Déroulement du stage :
Le but de ce stage est d’étudier l’effet du partage de la mémoire dans les multicoeurs et d’intégrer dans le placement dynamique des applications sur les processeurs, le comportement de la mémoire.
Les étapes de ce stage :
Rédiger un état de l’art sur les systèmes mémoires partagées des multicoeurs.
Analyser le comportement des mémoires dans des systèmes multicoeurs réels sur des applications parallélisées dynamiquement.
Identifier les mesures à réaliser pour évaluer les problèmes liés à la hiérarchie mémoire.
Intégrer dans les décisions dynamiques de parallélisation la prise en compte du comportement de la mémoire en dégageant des solutions adaptées.
Rémunération et thèse :
Ce stage sera rémunéré pendant 6 mois.