thesis

Etude des compilateurs "back-end" spécifiques pour les processeurs dédiés des systèmes multi-processeurs sur puce

Defense date:

Jan. 1, 2012

Edit

Disciplines:

Authors:

Directors:

Abstract EN:

In order to maintain the continuous growth of the performance of computers while keeping their energy consumption under control, the microchip industry develops architectures capable of processing more and more tasks concurrently. Thus, the next generations of microprocessors may count hundreds of independent cores that may differ in their functions and features. As an extensive knowledge of their internals cannot be a prerequisite to their programming, these forthcoming computers necessitate the compilation flow to evolve. In this thesis, through the presentation of an extension of the GCC compiler, we propose several axes of evolution for the part of a compiler which adapts the input program to the target architecture. In order to analyze and transform a program, we describe first an intermediate representation that offers a hierarchical view of the parallelism available. Then, we put the emphasis on the characterization of the detected parallel constructs, and the information gathered are used in new static scheduling technique which can deal with multiple levels of parallelism. We also address dynamic scheduling and code generation for heterogeneous architectures such as the IBM Cell BE and computers featuring a NVIDIA accelerator. The underlying execution model is supported by a programming framework and a performance predictor which can adjust the execution scheme on the fly. We conclude with an experimental evaluation of all our contributions, thus confirming their relevance in a functional compilation flow for massively parallel architectures.

Abstract FR:

Afin d'entretenir la hausse régulière des performances des calculateurs tout en maîtrisant leur consommation énergétique, l'industrie des microprocesseurs développe des architectures permettant de traiter de plus en plus de tâches en parallèle. Ainsi, les futures générations de puces regrouperont jusqu'à plusieurs centaines de cœurs indépendants, parfois fonctionnellement hétérogènes. Pour ne pas exiger comme pré-requis à leur programmation une connaissance détaillée de leur fonctionnement interne, ces futurs processeurs imposent de fait une évolution de la chaîne de compilation. Dans cette thèse, nous proposons avec la présentation d'une extension pour le compilateur GCC plusieurs axes d'évolution de la phase d'adaptation du programme à l'architecture cible. Afin d'analyser et de transformer le programme à compiler, nous décrivons tout d'abord une représentation intermédiaire qui offre une vue hiérarchique du parallélisme exploitable. L'accent est mis ensuite sur la caractérisation des éléments parallèles détectés, et les informations collectées sont réutilisées dans une nouvelle technique d'ordonnancement statique qui peut exploiter plusieurs degrés de parallélisme. Nous abordons aussi l'ordonnancement dynamique et la génération de code pour architectures hétérogènes telles l'IBM Cell BE et les machines dotées d'un accélérateur NVIDIA. Le modèle d'exécution sous-jacent est supporté par un environnement de programmation et un oracle qui permettent d'ajuster le schéma d'exécution à la volée. Nous terminons par une évaluation expérimentale de toutes ces contributions, confirmant ainsi leur pertinence dans une chaîne de compilation pour architectures massivement parallèles.