Thèse soutenue

Generation systematique de programmes paralleles pour architectures massivement paralleles

FR
Auteur / Autrice : MOURAD RAJI WERTH
Direction : Paul Feautrier
Type : Thèse de doctorat
Discipline(s) : Sciences appliquées
Date : Soutenance en 1993
Etablissement(s) : Paris 6

Résumé

FR

Nous presentons une methode de parallelisation qui, partant d'un programme ecrit dans un langage conventionnel (comme fortran 77) produit une forme parallele du programme en lui appliquant une serie de transformations selon un schema systematique. Cette forme est par la suite adaptee afin de generer du code pour une architecture donnee. Une traduction naive de la forme parallele conduit a des codes inefficaces, par consequent une etape d'optimisation est ensuite executee afin d'obtenir des codes plus performants. A l'aide des outils: le graphe du flot de donnees, la base de temps et la fonction de placement, et en operant une transformation de programme, nous obtenons un programme parallele equivalent au programme source ayant la forme suivante: une boucle sequentielle globale sur le temps ayant un corps entierement parallele (indexe par les coordonnees des processeurs). Malheureusement, le corps ainsi produit contient un certain nombre de tests et de communications generales (de type get) qui ne figuraient pas dans le programme original et qui par consequent limitent les performances du programme resultant. Nous avons developpe un algorithme permettant de decouper la boucle sur le temps en plusieurs boucles de facon a eliminer (ou considerablement reduire) les tests au sein de chaque sous-boucle. Quant aux communications generales, nous avons propose un modele mathematique base sur l'algebre lineaire qui transforme les communications get (recherche) en send (envoi) et broadcast (diffusion), etant donne que sur notre machine cible, la cm-2(200), les sends coutent deux fois moins chers que les gets. Ce modele permet aussi la detection des communications regulieres (dites news). Ce type de communication est implemente de facon efficace sur un grand nombre d'architectures, ce qui a pour effet d'augmenter considerablement les performances de nos programmes resultants