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.
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.