• Aucun résultat trouvé

Nous sommes donc en mesure de construire un ensemble pond´er´es d’arbres de diffusion qui r´ealise le d´ebit optimal, `a la fois pour le mod`ele un-port bidirectionnel et pour le mod`ele multi-port born´e. Cependant, utiliser plusieurs arbres de diffusion concurrents demande un m´ecanisme de contrˆole assez ´elabor´e : comme les diff´erents arbres ne sont pas utilis´es avec le mˆeme d´ebit, on doit cr´eer pour chaque arbre, sur chaque nœud, un processus en charge des messages transmis par cet arbre, et il faut en mˆeme temps rassembler et r´eordonner les messages provenant de tous ces processus. Comme cette complexit´e peut ˆetre un frein important `a l’implantation de cette strat´egie, nous proposons ici des m´ethodes heuristiques pour construire un seul arbre de diffusion. Nous utilisons les deux mod`eles de communication pr´ec´edents (un-port bidirectionnel et multi-port born´e). Trouver l’arbre de diffusion r´ealisant le meilleur d´ebit est un probl`eme NP-complet pour les deux mod`eles consid´er´es ; ce r´esultat est une cons´equence directe de la NP-compl´etude du probl`eme consistant `a trouver un arbre couvrant de degr´e born´e dans un graphe quelconque [51, probl`eme DEGREE-CONSTRAINT-SPANNING-TREE].

Nous proposons des heuristiques fond´ees sur des m´ethodes classiques pour construire un arbre de poids minimum et ´egalement des m´ethodes fond´ee sur le r´esultat du programme lin´eaire.

5.2.1 Heuristiques fond´ees sur des techniques de graphe

Nous pr´esentons ici des heuristiques assez simples, utilisant des techniques classiques sur les graphes. Ce sont des heuristiques pour le mod`ele de communication un-port bidirectionnel.

Elagage simple de la plate-forme (SIMPLE-PRUNE)´

Cette premi`ere heuristique de construction d’arbre est la plus simple : on consid`ere le graphe de la plate-formeG= (V, E, c) dont les arˆetes sont pond´er´ees par leur coˆut de communication et on supprime des arˆetes jusqu’`a obtenir un arbre, (en prenant naturellement garde `a ne pas d´econnecter des sommets). Les arˆetes sont supprim´ees en commen¸cant par celles de poids c maximum, comme pr´esent´e dans l’algorithme ci-dessous.

Arbre ← toutes les arˆetes de E Tant que |Arbre|>|V| −1 :

L← arˆetes (i, j) de Arbre tri´ees par valeurs deci,j d´ecroissantes Pourtoute arˆete e∈L :

Sile graphe (V,Arbre\{e}) est connexeAlors Arbre←Arbre\{e}

Elagage sophistiqu´´ e de la plate-forme (REFINED-PRUNE)

L’heuristique pr´ec´edente tente de supprimer de l’arbre de diffusion toutes les arˆetes qui ont un poids important. Pourtant, ceci n’est pas forc´ement la bonne strat´egie : si un processeur a beaucoup de fils dans l’arbre (par exemple 10) et que toutes ses arˆetes sortantes sont de poids moyen (par exemple 2), il va passer un temps important (dans l’exemple, 20 unit´es de temps) `a transmettre un message de la s´erie de diffusions `a chacun de ses fils ; un processeur ayant un seul fils dans l’arbre connect´e par une arˆete de poids important (par exemple 15) aura besoin d’un temps moins important (15 unit´es de temps) pour chaque message. Le d´ebit d’un processeur dans l’arbre est donc inversement proportionnel `a son degr´e sortant pond´er´e dans l’arbre, c’est-`a-dire la somme des poids des arˆetes sortantes utilis´ees. On va donc chercher `a minimiser cette quantit´e, plutˆot qu’`a ´eliminer les arˆetes de poids important. C’est ce que fait l’algorithme suivant, en calculant le degr´e sortant pond´er´e δout(Pi) d’un processeurPi et en le maintenant au cours de l’ex´ecution. Il s’agit maintenant de supprimer l’arˆete la plus coˆuteuse du processeur qui a le degr´e sortant maximum, sous r´eserve de garder le graphe connexe.

1: Arbre ← toutes les arˆetes de E

2: Pour tout sommetPi∈V :

3: δout(Pi)← X

j,(i,j)∈E

ci,j

4: Tant que |Arbre|>|V| −1:

5: V0 ←sommets de V tri´es par valeurs deδout(u) d´ecroissantes

6: PourPi∈V0 :

7: L ← arˆetes sortantes dePi tri´ees par valeurs deci,j d´ecroissantes

8: Pour toute arˆetee= (i, j)∈L:

9: Sile graphe (V,Arbre\{e}) est connexe Alors

10: Arbre←Arbre\{e}

11: δout(Pi)←δout(Pi)−ci,j

12: Aller `a la ligne 4

Arbre couvrant de degr´e sortant minimal (GROW-MIN-OUTDEG)

Cette heuristique s’inspire de l’algorithme de Prim [43] pour construire un arbre couvrant de poids minimal. La m´etrique habituelle pour le poids d’un arbre est la somme des poids des arˆetes. Mais, comme nous l’avons remarqu´e ci-dessus, la somme des coˆuts de arˆetes n’est pas une m´etrique tr`es int´eressante ici. Au contraire, nous cherchons `a minimiser le maximum des degr´es pond´er´es des nœuds. L’algorithme pr´esente une adaptation de l’algorithme de Prim pour cette nouvelle m´etrique, dans lequel V0 d´esigne l’ensemble des sommets de G couverts par l’arbre de diffusion courant. Lorsque nous prenons la d´ecision d’ajouter une arˆete (i, j) `a l’arbre, nous mettons `a jour les coˆuts des autres arˆetes (i, k) sortantes dePi, de sorte que le poidsw(i, j) d’une arˆete (i, j) repr´esente toujours le degr´e sortant du nœudPi apr`es insertion de (i, j) dans l’arbre.

En s´electionnant l’arˆete de poids minimal w(i, j), nous augmentons aussi peu que possible le maximum des degr´es pond´er´es des nœuds de l’arbre.

Arbre ← ∅ V0 ← {Psource}

Pourtoute arˆetee= (i, j) : w(i,j)←Ti,j

Tant que V06=V :

choisir l’arˆete (i, j) telle quePi∈V0,Pj ∈/V0 etw(i, j) est minimal V0←V0∪ {j}

Arbre←Arbre∪ {(i, j)}

Pour toute arˆete (i, k)∈/ Arbre : w(i,k←w(i,k) +w(i,j)

5.2.2 Heuristiques s’inspirant d’une solution du programme lin´eaire

Nous d´eveloppons maintenant deux heuristiques qui se fondent sur une solution du pro-gramme lin´eaire. Ces heuristiques peuvent ˆetre construites aussi bien `a partir d’une solution du programme lin´eaire4.5 sous le mod`ele un-port bidirectionnel ou pour une solution du pro-gramme lin´eaire5.2sous le mod`ele multi-port born´e.

Nous supposons donc que nous disposons d’une solution (send, s) d’un des programmes lin´eaires. Nous utilisons le graphe des communications de la solution du programme lin´eaire, c’est-`a-dire le graphe de la plate-forme G= (V, E) dont les arˆetes (i, j) sont pond´er´ees par le nombre de messages s(Pi→Pj) transmis dans la solution programme lin´eaire.

Elagage du graphe de communication (LP-PRUNE)´

Dans cette heuristique, nous partons du graphe total des communications, puis nous suppri-mons les arˆetes le moins utilis´ees par la solution du programme lin´eaire, c’est-`a-dire les arˆetes avec la plus petite quantit´e de messages s(Pi→Pj), sous r´eserve de conserver la connexit´e du graphe, jusqu’`a obtenir un arbre. Cette heuristique est pr´esent´ee dans l’algorithme ci-dessous.

Arbre ← toutes les arˆetes de E Tant que |Arbre|>|V| −1 :

L← arˆetes (i, j) de Arbre tri´ees par valeurs des(Pi→Pj) d´ecroissantes Pourtoute arˆete e∈L :

Sile graphe (V,Arbre\{e}) est connexeAlors Arbre←Arbre\{e}

Construction d’un arbre couvrant (LP-GROW)

Cette heuristique consiste `a faire croˆıtre un arbre couvrant, `a la fa¸con de l’algorithme de Prim, en rajoutant toujours l’arˆete qui a la valeur des(Pi→Pj) maximale.

Arbre ← ∅ V0 ← {Psource} Tant que V0 6=V :

choisir l’arˆete (i, j) telle que i∈V0,j /∈V0 ets(Pi→Pj) est maximal V0←V0∪ {v}

Arbre←Arbre∪ {(u, v)}

Comme ces deux heuristiques peuvent ˆetre utilis´ees partant d’une solution du programme lin´eaire selon le mod`ele un-port bidirectionnel ou le mod`ele multi-port born´e, nous disposons de quatre heuristiques, que nous noterons OP-LP-PRUNE et OP-LP-GROW pour le mod`ele un-port, et MP-LP-PRUNE et MP-LP-GROW pour le mod`ele multi-port.

D’autres part, nous allons comparer ces heuristiques avec les strat´egies optimales pour cha-cun des mod`eles de communication, en d´ecomposant la solution du programme lin´eaire en un ensemble pond´er´es d’arbres de diffusion. Dans la suite, cette strat´egie optimale sera nomm´ee OP-LP-MULTI-TREE pour le mod`ele un-port et MP-LP-MULTI-TREE pour le mod`ele multi-port.