next up previous
Next: Généricité dans les Up: Travaux Théoriques Previous: Évaluation incrémentale

Évaluateurs d'attributs sur machines parallèles

avec B. MARMOL (DEA [Mar90], puis thèse [Mar94]) L'efficacité des évaluateurs séquentiels à base de séquences de visites est due à la connaissance d'un ordre total d'évaluation des attributs de chaque non-terminal, qui fait que l'évaluateur sait à tout instant quels attributs il a déjà calculé. En ce sens, cette contrainte est ``utile'' puisqu'elle permet de gagner en efficacité. En revanche, l'ordre de calcul des attributs d'une production n'est contraint que par l'ordre de calcul des attributs de chaque non-terminal et par les dépendances locales; ceci ne définit en général qu'un ordre partiel, et tous les ordres totaux compatibles avec celui-ci sont équivalents en efficacité.

On peut donc imaginer que, sur une machine parallèle, il est important de conserver un ordre total pour évaluer les attributs de chaque non-terminal, de façon à éviter des attentes et des synchronisations inutiles, mais qu'il est bénéfique de parcourir en parallèle des sous-arbres disjoints pour calculer leurs attributs ([Mar90]).

Nous avons créé une version modifiée de FNC-2 qui produit des évaluateurs parallèles fondés sur la méthode précédente. Ces évaluateurs sont écrits en C pour une machine Sequent Balance, dont nous possédons un exemplaire à Rocquencourt, et son système d'exploitation Dynix. L'architecture de cette machine, multi-processeur à mémoire partagée, est parfaitement adaptée à l'implantation de notre méthode d'évaluation. Après avoir résolu de nombreux problèmes très irritants dûs à notre inexpérience de la programmation d'applications parallèles (le travail de B. MARMOL), nous avons pu mener quelques expériences sur des GA et des textes sources relativement réalistes. Les résultats sont tout à fait satisfaisants puisque nous observons une parallélisation très réussie (multiplication de la vitesse de traitement par un facteur supérieur à 5 avec 6 processeurs, soit une efficacité de 86%). Ces travaux sont décrits plus en détail dans [Mar94,JMP94].

Par ailleurs, nous avons étendu les techniques d'optimisation de la gestion de la mémoire des évaluateurs classiques à nos évaluateurs parallèles. Plus précisément, nous considérons les évaluateurs parallèles comme une famille d'évaluateurs exhaustifs séquentiels, sur chacun desquels nos algorithmes d'optimisation mémoire peuvent s'appliquer. La description formelle de cette décomposition est achevée [Mar94] s'appuyant fortement sur nos travaux de la section 2.5 ; malheureusement, nous n'avons pas pour l'instant le temps de la mettre en uvre.



next up previous
Next: Généricité dans les Up: Travaux Théoriques Previous: Évaluation incrémentale



Didier Parigot
Mon Apr 7 11:02:46 MET DST 1997