Performance Monitoring of Throughput Constrained Dataflow Programs Executed On Shared-Memory Multi-core Architectures
Analyse de Performance d'Applications Flot De Donnée Executées sur des Machines Multi-coeurs à Mémoire Partagéé
Résumé
Because of physical limits, hardware designers have switched to parallel systems to exploit the still growing number of transistors per square millimeter of silicon. These parallel systems are made of several independent computing units. To benefit from these computing units, software must be changed. Existing sequential applications have to be split into independent tasks to be executed in parallel on the different computing units. To that end, many concurrent programming models have been proposed and are in use today. We focus in this thesis on the dataflow concurrent programming model.
This work is about performance evaluation of dataflow programs on
multicore architectures. We propose to extend dataflow programming
models with the notion of throughput constraints and to take this
information into account in the compilation tool chain to detect at
runtime the throughput bottlenecks. The profiling results gathered
during the execution are used both for off-line analyzes and to adapt
the application during its execution. In the former case, the
developer uses this information to know which part of the dataflow
program should be optimized and to efficiently distribute the program
on the computing units. In the later case, the profiling information
is used by runtime adaptation mechanisms to distribute differently the
work on the computing units.
We give a particular focus on the profiling of the usage of the memory
subsystem. The data exchange information provide by the programming
model allows to efficiently used the memory subsystem of multicore
architectures. Nevertheless, the complexity of modern memory systems
doesn't allow to statically evaluate the impact of memory accesses on
the global performances of the application. We propose to set up
memory profiling dedicated to dataflow applications based on hardware
profiling mechanisms.
Les progrès continus de la microélectronique couplés au problème de
gestion de la puissance dissipée ont conduit les fabricants de
processeurs à se tourner vers des puces dites multi-coeurs au début
des années 2000. Ces processeurs sont composés de plusieurs unités de
calcul indépendantes. Contrairement aux progrès précédents ces
architectures multi-coeurs, le logiciel doit être en grande parti
repensé pour tirer partie de toutes les unités de calcul. Il faut
pouvoir paralléliser une application séquentielle en tâches le plus
indépendantes possibles pour pouvoir les exécuter sur différentes
unités de calcul. Pour cela, de nombreux modèles de programmations
dits concurrents ont été proposés. Dans cette thèse nous nous
intéressons aux programmes décrits à l’aide du modèle dataflow.
Ce travail porte sur l’évaluation des performances de programmes
dataflow (forme que revêtent typiquement des applications de types
traitement de flux vidéos ou protocoles de communication) sur des
architectures multi-coeurs. Plus particulièrement, le sujet de la
thèse porte sur l’extension de modèles de programmation dataflow avec
des éléments d’expression de propriétés de qualité de service ainsi
que la prise en compte de ces éléments pour détecter, à l’exécution,
les goulots d’étranglement de performance au sein des programmes. Les
informations concernant les goulots d'étranglements collectées pendant
l'exécution sont utilisées à la fois pour faire de l'analyse
hors-ligne et pour faire des adaptations pendant l'exécution des
programmes. Dans le premier cas, le programmeur utilise ces
informations pour savoir quelles parties du programme dataflow il faut
optimiser et pour savoir comment distribuer efficacement le programme
sur les unités de calcul. Dans le second cas, les informations
collectées sont utilisées par des mécanismes d'adaptation automatique
afin de redistribuer le travail sur les différentes unités de calcul
de façon plus efficace.
Nous portons une attention particulière au profiling de l'utilisation
faite par les applications dataflow du système mémoire. Les
informations sur les échanges de données fournies par le modèle de
programmation permettent d'exploiter de façon intelligente les
architectures mémoires des machines multi-coeurs. Néanmoins, la
complexité de ces dernières ne permet pas de façon générale d'évaluer
statiquement l'impact sur les performances des accès mémoires. Nous
proposons donc la mise en place d'un système de profiling mémoire pour
des applications dataflow basé sur des mécanismes matériels.