Lieu :
Salle d’enseignement 008
Bâtiment Ensimag
51, avenue Jean Kuntzmann
38330, Montobonnot Saint-Martin
Le jury sera composé de :
— M. Philippe O. A. Navaux, Professeur à l’Universidade Federal do Rio Grande do Sul (UFRGS), Président
— M. Pascal Felber, Professeur à l’Université de Neuchâtel, Rapporteur
— M. Raymond Namyst, Professeur à l’Université de Bordeaux 1, Rapporteur
— M. Miguel Santana, Directeur du centre IDTEC, STMicroelectronics, Crolles, Examinateur
— M. Jean-François Méhaut, Professeur à l’Université de Grenoble - CEA, Directeur de thèse
— M. Luiz Gustavo L. Fernandes, Professeur à Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS), Co-directeur de thèse
Le concept de processeur multicoeurs constitue le facteur dominant pour offrir des hautes performances aux applications parallèles. Afin de développer des applications parallèles capables de tirer profit de ces plate-formes, les développeurs doivent prendre en compte plusieurs aspects, allant de l’architecture aux caractéristiques propres à l’application. Dans ce contexte, la Mémoire Transactionnelle (Transactional Memory - TM) apparaît comme une alternative intéressante à la synchronisation basée sur les verrous pour ces plates-formes. Elle permet aux programmeurs d’écrire du code parallèle encapsulé dans des transactions, offrant des garanties comme l’atomicité et l’isolement. Lors de l’exécution, les opérations sont exécutées spéculativement et les conflits sont résolus par ré-exécution des transactions en conflit. Bien que le modèle de TM ait pour but de simplifier la programmation concurrente, les meilleures performances ne pourront être obtenues que si l’exécutif est capable de s’adapter aux caractéristiques des applications et de la plate-forme.
Les contributions de cette thèse concernent l’analyse et l’amélioration des performances des applications basées sur la Mémoire Transactionnelle Logicielle (Software Transactional Memory - STM) pour des plates-formes multicoeurs. Dans un premier temps, nous montrons que le modèle de TM et ses performances sont difficiles à analyser. Pour s’attaquer à ce problème, nous proposons un mécanisme de traçage générique et portable qui permet de récupérer des événements spécifiques à la TM afin de mieux analyser les performances des applications. Par exemple, les données tracées peuvent être utilisées pour détecter si l’application présente des points de contention ou si cette contention est répartie sur toute l’exécution. Notre approche peut être utilisée sur différentes applications et systèmes STM sans modifier leurs codes sources.
Ensuite, nous abordons l’amélioration des performances des applications sur des plates-formes multicoeurs. Nous soulignons que le placement des threads (thread mapping) est très important et peut améliorer considérablement les performances globales obtenues. Pour faire face à la grande diversité des applications, des systèmes STM et des plates-formes, nous proposons une approche basée sur l’Apprentissage Automatique (Machine Learning) pour prédire automatiquement les stratégies de placement de threads appropriées pour les applications de TM. Au cours d’une phase d’apprentissage préliminaire, nous construisons les profiles des applications s’exécutant sur différents systèmes STM pour obtenir un prédicteur. Nous utilisons ensuite ce prédicteur pour placer les threads de façon statique ou dynamique dans un système STM récent.
Finalement, nous effectuons une évaluation expérimentale et nous montrons que l’approche statique est suffisamment précise et améliore les performances d’un ensemble d’applications d’un maximum de 18%. En ce qui concerne l’approche dynamique, nous montrons que l’on peut détecter des changements de phase d’exécution des applications composées des diverses charges de travail, en prévoyant une stratégie de placement appropriée pour chaque phase. Sur ces applications, nous avons obtenu des améliorations de performances d’un maximum de 31% par rapport à la meilleure stratégie statique.