THÈSE D'UNIVERSITÉ :
Pandore II : un compilateur dirigé par la distribution des données.

Fichier PostScript (388K)

Olivier Chéron

Juillet 1993


Résumé

Cette thèse présente le compilateur Pandore II qui constitue la partie centrale d'un environnement de programmation de machines parallèles à mémoire distribuée. Pandore II facilite l'utilisation de ces machines en déchargeant le programmeur des tâches de répartition des calculs, distribution des données et gestion des communications. À partir d'un langage séquentiel enrichi de moyens d'expression du partitionnement des données, et en suivant la règle des écritures locales, le compilateur génère des processus parallèles coopérant par échanges de messages.

Afin de pouvoir intégrer différentes optimisations, mais également de supporter différents langages sources et cibles, le compilateur a été conçu comme une structure d'accueil pour de nouveaux éléments : frontaux, modules d'optimisation, générateurs de code. Une chaîne de compilation modulaire et complète a été conçue, mise en oeuvre et expérimentée : elle produit du code pour un exécutif portable qui autorise la compilation pour une large gamme de machines cibles.

Après avoir situé le contexte de ce travail, nous présentons le principe de distribution choisi pour Pandore II. La description de deux compilateurs adoptant une approche similaire (Vienna Fortran et Fortran D) constitue un état de l'art de ce domaine. Les différents aspects de la compilation en Pandore II sont ensuite abordés : structure générale du compilateur, représentation interne des programmes, schéma de traduction, accès aux données distribuées, génération de code. Enfin, après avoir donné les résultats de nos expérimentations, nous dressons le bilan du travail réalisé et indiquons les perspectives pour étendre et améliorer notre environnement.


PhD THESIS:
Pandore II : a compiler guided by data distribution.

PostScript file (388K)

Olivier Chéron

July 1993


Abstract

This thesis presents the Pandore II compiler which forms the central part of a programming environment for distributed memory parallel machines. The lack of global memory together with the processors multiplicity make the programming of these machines difficult. Our environment eases their use by alleviating the programmers from the tasks of distributing computations and data, and managing communication. Starting from a sequential language enhanced with data partitioning facilities and following the owner compute rule, the compiler generates parallel processes which exchange messages.

To ease the integration of different optimizations, and to support different source and target languages, the compiler has been conceived as an open structure allowing the addition of extra units: front-ends, optimizers, back-ends. A full compilation chain has been implemented and experimented: it produces code for a portable runtime which allows compilation for a wide range of target machines.

After the background of this work has been described, the distribution principles chosen for Pandore II are introduced. Two compilers (Vienna Fortran and Fortran D) for which a similar approach has been adopted are then presented. After that, the different aspects of the compilation are exposed: general structure of the compiler, internal representation of programs, compilation scheme, distributed data access, code generation. Before concluding, experimentation results are commented. Finally, perspectives for extending and improving the Pandore II environment are discussed.