David Beniamine - Analyse du comportement mémoire d'application paralleles de calcul scientifique

14:00
Lundi
5
Déc
2016
Organisé par : 
David Beniamine
Intervenant : 
David Beniamine
Équipes : 
Information détaillée : 

 

Members of the Committee :

  • Pr Martin Quinson, ENS Rennes, président
  • Pr Jesus Labarta Mancho, Universitat Politècnica de Catalunya, rapporteur
  • Pr Raymond Namyst, Université de Bordeaux, rapporteur
  • Dr Lucas M. Schnorr, Universidade Federal do Rio Grande Do Sul, examinateur
  • Pr Bruno Raffin, Inria Grenoble, directeur de thèse
  • Dr Guillaume Huard, University of Grenoble Alpes, co-directeur de thèse
Résumé : 

Depuis plusieurs décennies, afin de réduire la consommation énergétique des processeurs, les constructeurs fabriquent des ordinateurs de plus en plus parallèles. Dans le même temps, l'écart de fréquence entre les processeurs et la mémoire a significativement augmenté. Pour compenser cet écart, les processeurs modernes embarquent une hiérarchie de caches complexe. Développer un programme efficace sur de telles machines est une tâche difficile. Par conséquent, l'analyse de performance est devenue une étape majeure lors du développement d'applications exécutant des calculs lourds.

La plupart des outils d'analyse de performances se concentrent sur le point de vue du processeur. Ces outils voient la mémoire comme une entité monolithique et sont donc incapables de comprendre comment elle est accédée. Cependant, la mémoire est une ressource critique et les schémas d'accès à cette dernière peuvent impacter les performances de manière significative. Quelques outils permettant l'analyse de performances mémoire existent, cependant ils sont basés sur un échantillonnage à large grain. Par conséquent, ces outils se concentrent sur une petite partie de l'exécution et manquent le comportement global de l'application. De plus, l'échantillonnage à large granularité ne permet pas de collecter des schémas d'accès.

Dans cette thèse, nous proposons deux outils différents pour analyser le comportement mémoire d'une application. Le premier outil est conçu spécifiquement pour pour les machines NUMA (Not Uniform Memory Accesses) et fournit plusieurs visualisations  du schéma global de partage de chaque structure de données entre les flux d'exécution Le deuxième outil collecte des traces mémoires à grain fin avec information temporelles. Nous proposons de visualiser ces traces soit à l'aide d'un outil générique de gestion de traces soit en utilisant une approche programmatique basé sur le langage R. De plus nous évaluons ces deux outils en les comparant à des outils existant de trace mémoire en terme de performances, précision et de complétude.