Allocation de graphes de taches parametres et generation de code
Auteur / Autrice : | Emmanuel Jeannot |
Direction : | Michel Cosnard |
Type : | Thèse de doctorat |
Discipline(s) : | Sciences et techniques |
Date : | Soutenance en 1999 |
Etablissement(s) : | Lyon, École normale supérieure (sciences) |
Résumé
Le graphe de taches (gdt) est un modele tres utilise pour la prediction de performance et l'optimisation d'applications paralleles. Il presente cependant deux desavantages. La taille d'un gdt depend de la valeur des parametres de l'application qu'il modelise. Un algorithme d'ordonnancement statique prend en entree un gdt et affecte, a chaque tache, un processeur et une date de debut d'execution. La duree du calcul de l'ordonnancement ainsi que le cout memoire dependent de la taille du graphe et donc de la valeur des parametres de l'application. Une telle approche n'est pas extensible car pour les grandes valeurs des parametres le graphe de taches correspondant peut ne pas tenir en memoire. Cette methode n'est pas non plus adaptative car un changement de machine cible ou des parametres du programme impose de recalculer l'ordonnancement. Pour apporter une reponse a ces deux problemes nous avons etudie un modele intermediaire : le graphe de taches parametre (gtp). Un gtp est une representation compacte et symbolique des graphes de taches issus de certaines applications de calcul scientifique. Il utilise les parametres du programme qui doivent etre instancies pour construire le gdt. Nos travaux se decomposent en trois volets. (1) nous avons concu un algorithme d'ordonnancement du gtp. Le cout memoire de l'ordonnancement se trouve alors grandement reduit. Cet algorithme est integre dans un schema dynamique pour permettre la construction de programmes generiques. (2) nous presentons une heuristique d'allocation symbolique du gtp appelee slc. Nous garantissons que cette allocation forme des grappes lineaires. Le temps et le cout memoire de l'allocation sont alors independants de la valeur des parametres. (3) nous avons realise un prototype de generateur de code qui produit un programme multithreade se conformant a l'allocation trouvee par slc. Nous obtenons ainsi un code parallele portable et generique qui fonctionne pour toutes les valeurs des parametres du programme.