
Précédent : Taxonomie des implantations séquentielles
Remonter : Implantation des langages fonctionnels
Suivant : Les types graphes
Participants : Pascal Fradet, Julien Mallet, Mario Südholt
Le but des langages restreints pour la programmation des
machines massivement parallèles est de concilier efficacité,
portabilité et abstraction. L'approche que nous avons adoptée est
celle des langages composés d'une collection de schémas de
programmes (patrons) intrinsèquement parallèles (map, reduce,
scan, etc). Les opérateurs parallèles de HPF ou des langages
comme NESL peuvent être vus comme des exemples de ce style de
programmation. Nous poursuivons actuellement deux directions de
recherche:
- Les programmes à base de patrons sont d'habitude utilisés
dans un cadre SPMD et opèrent sur un espace de données
partitionné. Nous avons examiné une généralisation consistant
en la paramétrisation des patrons par une description abstraite
des distributions de données. Ces descriptions sont utilisées
afin de spécifier (par les recouvrements des données) les
communications potentielles. En prenant plusieurs algorithmes
numériques, nous avons démontré que cette information permet de
guider la compilation des langages à base de patrons [20, 17].
- Une autre solution consiste à compiler automatiquement
toutes les tâches spécifiques au parallélisme sans demander
plus d'information de la part du programmeur. Nous avons défini
un langage restreint comportant une collection de patrons de
communication. Il devient possible de calculer précisément le
coût de communication et de choisir automatiquement la
distribution des données. La compilation se décrit comme une
succession de transformations de programmes. Après l'étape de
distribution, le programme SPMD obtenu peut être directement
traduit dans le langage parallèle spécifique à une machine
cible. Un prototype de compilateur pour la machine Intel
Paragon est en cours de développement.