previous up next top index
Précédent : Réseaux haut débit pour le Remonter : Outils/environnements pour la programmation parallèle Suivant : Actions industrielles


Equilibrage de charge et parallélisme de données

Nous nous sommes intéressés à la faisabilité de l'intégration d'un service d'équilibrage de charge dans un langage à parallélisme de données. Nous avons choisi dans un premier temps le langage HPF (High Performance Fortran ), car il existe des compilateurs dont les sources sont disponibles, par exemple Adaptor, et pour établir une synergie avec le projet HPFIT.

Nous avons d'abord étudié les processus légers dans les langages data-parallèles du point de vue de son coût. Notre approche est d'utiliser les processus légers (threads ) comme unité de migration [70]. Il est apparu que la surcharge était tout à fait acceptable. La deuxième partie de l'année a été consacrée à la mise en oeuvre et à l'évaluation expérimentale d'un code data-parallèle (Gauss avec pivots) utilisant la migration de processus légers [69].

Le choix de l'environnement multithread sous-jacent est un point crucial de ce travail. En effet, l'utilisation des threads comme unité de migration impose à celui-ci d'intégrer la migration de threads. À l'heure actuelle, Athapascan (projet Apache) n'intègre pas encore cette fonctionnalité de manière adéquate pour nous, et nous utilisons donc l'environnement PM2 du LIFL (Jean-Marc Geib).

L'originalité de notre approche est de coupler des techniques d'équilibrage de charge dynamique avec des techniques d'analyse statique de programmes data-parallèles réguliers. Il s'agit d'extraire des informations en vue de paramétrer le module d'équilibrage de charge suivant le code. En particulier, les nids de boucles ``presque réguliers'', avec des indirections et/ou des tests par exemple, sont de bons candidats pour notre approche. Notre objectif pour cette année est la réalisation d'un prototype générant du code multithread avec équilibrage de charge guidé par des annotations du programme source. Dans un deuxième temps, nous étudierons comment ces annotations peuvent être générées plus ou moins automatiquement par le compilateur.

Nous avons récemment noué des contacts avec Philip Hatcher, univ. New Hampshire, très impliqué dans le développement du langage data-parallèle C* (Data Parallel C Environment, DPCE). Ceci nous conduit à appliquer notre expertise au développement d'environnements de programmation pour ce langage. La plate-forme TransTool offre une bonne base de départ, en adaptant à C* certains développements faits pour HPF. Une proposition de projet NSF/Inria, C*IT, est en cours de rédaction et sera prochainement soumise.



previous up next top index Précédent : Réseaux haut débit pour le Suivant : Actions industrielles Remonter : Outils/environnements pour la programmation parallèle