Generation automatique de codes de transfert pour multiprocesseurs a memoires locales
Institution:
Paris 6Disciplines:
Directors:
Abstract EN:
Pas de résumé disponible.
Abstract FR:
Les paralleliseurs automatiques generent du code pour les multiprocessuers a memoire partegee sans teneir compte de leur hierarchie memoire. Le but de ce travail est d'ajouter a un paralleliseur une phase lui permettant de transformer un ensemble de taches paralleles en un ensemble de taches equivalentes utilisant les memoires locales du multiprocesseur. Les algorithmes presents permettent de generer automatiquement les codes transfert des donenes entre deux niveaux de memoire du multiprocesseur. Ces codes de transfert doivent copier l'ensemble des elements de tableaux references au cours de l'execution d'une tache sur un processeur. Caracteriser cet ensemble de donnees conduit a modeliser des ensembles de points entiers, non necessairement convexes. Pour les transferts de la memoire globale vers la memoire locale, il est possible de copier plus d'elements que ceux reellement utilises par la tache, et par exemple de transferer leur enveloppe convexe. Un compromis est alors fait entre l'espace alloue en memoire locale, le volume des transfert et la complexite des bornes de boucle des codes de transfert. Pour le cade de recopie de la memoire locale vers la memoire globale il n'est pas possible de transferer plus d'elements que ceux reellement modifies par la tache, car il faut conserver une memoire globale coherente. Chaque processeur doit recopier en memoire globale uniquement les resultats qu'il a calcules. Les expressions des bornes de boucles du code de transfert contiendront des divisions entieres pour traduire la non-convexite des domaines. Pour des programmes reels, les codes de transfert generes par nos algorithmes sont toujours optimaux: chaque element n'est transfere qu'une seule fois. Associes a une phase d'analyse des dependances, ils peuvent aussi etre tuilises pour generer les codes de transfert de donnees pour des multiprocesseurs a memoire distribuee. Lorsque le partitionnement des donnees dans les memoires locales est connu, ils permettent l'elimination du masque d'execution utilise pour specifier l'ensemble des donnees locales a calculer sur un processeur