• Aucun résultat trouvé

Algorithme de modification de l’ordre des sous-arbres

6.4 Facteurs limitant la scalabilit´e m´emoire

6.4.5 S´equence des sous-arbres

6.4.5.1 Algorithme de modification de l’ordre des sous-arbres

Dans cette section, nous pr´esentons deux algorithmes simples visant `a optimiser la remont´ee dans l’arbre d’assemblage. L’algorithme se base sur la topologie de l’arbre d’as-semblage o`u on consid`ere les sous-arbres comme une seule tˆache.

Algorithme 6.1 Algorithme global de g´en´eration de l’ordre des sous-arbres.

ordonner sous-arbres (T) : d´ebut

Pour tout i appartenant `a l’ensemble des racines: d´eterminer l’ensemble des sous-arbres de i;

Classer les sous-arbres dans l’ordre d´ecroissant de leur distance `a i;

Classer les arbres correspondant aux racines du plus profond au moins profond ; fin

L’algorithme 6.1 classe les sous-arbres sur un crit`ere topologique qui est la distance

`a la racine. Ainsi, les processeurs vont commencer leurs calculs par les sous-arbres qui correspondent aux branches les plus profondes de l’arbre d’assemblage simplifi´e (arbre o`u on consid`ere chacun des sous-arbres comme une seule tˆache). Le fait de faire commencer les processeurs par les sous-arbres qui correspondent aux branches les plus profondes va favoriser le processus de remont´ee ainsi que la diminution de la dur´ee de vie des blocs de contributions.

Algorithme 6.2 Algorithme distribu´e de g´en´eration de l’ordre des sous-arbres.

ordonner sous-arbres (T,p) : d´ebut

Pour tout i appartenant `a l’ensemble des racines:

Pour tout j appartenant `a l’ensemble des sous-arbres assign´es au processeur p : Classer les sous-arbres dans l’ordre d´ecroissant de leur distance `ai;

Classer les arbres correspondant aux racines du plus profond au moins profond ; fin

L’algorithme 6.2 est une variante de l’algorithme 6.1 qui g´en`ere un ordre tel que les processeurs traitent leurs sous-arbres du plus profond au moins profond. La principale diff´erence avec l’algorithme 6.1 est le fait que l’ordre est g´en´er´e localement sur le proces-seur (alors que dans l’algorithme 6.1 l’ordre ´etait global). Si nous consid´erons le cas de l’arbre T1 donn´e dans la figure 6.5(b), les ordres g´en´er´es par les deux heuristiques sont identiques exception faite du processeur P2 qui commencera par le sous-arbre C avec

l’algorithme6.1 (branche la plus profonde), alors qu’il commencera par le sous-arbre par le sous-arbre F avec l’algorithme 6.2 (son sous-arbre le plus profond).

6.4.5.2 R´esultats exp´erimentaux

Dans cette section, nous pr´esentons des r´esultats concernant l’occupation m´emoire du solveur apr`es l’application de l’algorithme 6.1. Ces r´esultats sont compar´es `a MUMPS et

`a un d´eriv´e de l’algorithme 6.1 qui fait commencer les processeurs par les branches les plus proches de la racine. Les tests ont ´et´e faits sur l’IBM SP3 du CINES2 d´ecrite dans l’annexe C.

Les exp´erimentations ont ´et´e faites sur les matrices BMWCRA 1, GUPTA3, MSDOOR, SHIP 003, PRE2, TWOTONE et XENON2 (voir l’annexe C pour plus de d´etails). De plus, les tests on ´et´e effectu´es sur 16 processeurs sur la plate-forme d´ecrite pr´ec´edemment. Enfin, nous avons utilis´e AMF (Approximate Minimum Fill) et SCOTCH [45] comme techniques de renum´erotation.

Nous nous int´eressons dans ce qui suit `a la taille maximale de la m´emoire active sur tous les processeurs (maximum des pics). Le choix de cette m´etrique est motiv´e par le fait que cette ´etude vise `a ´etudier les param`etres ayant une influence sur le comportement m´emoire de mani`ere `a optimiser cette derni`ere. Dans ce qui suit nous nous int´eressons `a quatre strat´egies :

Strat´egie 1. Dans cette strat´egie, seul l’ordre des branches `a l’int´erieur des sous-arbres est modifi´e `a l’aide de la variante de l’algorithme de Liu (algorithme3.1) qui permet une utilisation m´emoire optimale sur les parties s´equentielles. Concernant le haut de l’arbre, l’ordre est un ordre pseudo-al´eatoire o`u la seule est r`egle est que le plus gros nœud fils d’un nœud est trait´e en premier `a chaque niveau de l’arbre.

Strat´egie 2. La variante de l’algorithme de Liu (algorithme 3.1) est appliqu´ee sur l’in-t´egralit´e de l’arbre. Ainsi cette strat´egie tend `a privil´egier les branches les plus profondes.

Strat´egie 3. La variante de l’algorithme de Liu est toujours appliqu´ee `a l’int´erieur des sous-arbres, mais les branches du haut de l’arbre sont ordonn´ees selon l’algorithme 6.1.

Strat´egie 4. La variante de l’algorithme de Liu est toujours appliqu´ee `a l’int´erieur des sous-arbres, mais les branches du haut de l’arbre sont ordonn´ees selon l’algorithme 6.2.

Les r´esultats obtenus sont donn´es dans les tableaux 6.6et6.7pour AMF et SCOTCH respectivement.

Nous pouvons constater qu’avec AMF l’algorithme6.1permet de l´eg`erement diminuer le pic de m´emoire active observ´e. Ceci est du principalement au fait qu’AMF donne des arbres tr`es d´es´equilibr´es (voir le chapitre2). Nous pouvons aussi remarquer que l’approche initialement adopt´ee par la strat´egie 1 (bas´ee sur la variante de l’algorithme de Liu) est

2Centre Informatique National de l’Enseignement Sup´erieur

6.4. FACTEURS LIMITANT LA SCALABILIT ´E M ´EMOIRE 91

BMWCRA 1 GUPTA3 MSDOOR SHIP 003 PRE2 TWOTONE XENON2 Strat´egie 1

Tab.6.6 – Pics de m´emoire active (en millions de r´eels) observ´es sur 16 processeurs avec AMF avec et sans l’algorithme 6.1.

dans la majorit´e des cas meilleure que la strat´egie 2 . Ainsi l’ordre bas´e sur la profondeur, donn´e par l’algorithme6.1(strat´egie 3) peut ˆetre une bonne approche. Nous pouvons aussi constater que l’algorithme6.2(strat´egie 4) est en g´en´eral moins bon que l’algorithme 6.1.

Ceci est dˆu principalement au fait que le processus de remont´ee est fait `a plusieurs endroits simultan´ement. Cependant il est important de signaler que sur des cas particuliers, comme par exemple GUPTA3 avec AMF sur 16 processeurs, on obtient une diminution de 18,9

%. De plus, d’autres anomalies comme celle observ´ee avec AMF sur la matrice MSDOOR o`u les strat´egie 1 et 4 ont la meilleure occupation m´emoire.

P0

Fig. 6.6 – Illustration des probl`emes relatifs `a la taille des sous-arbres.

En analysant ces situations (GUPTA3 avec les strat´egies 1,2 et 3 et MSDOOR avec les strat´egies 2 et 3), nous avons observ´e que le pic m´emoire est atteint `a l’int´erieur d’un sous-arbre. Cela est illustr´e dans la figure 6.6. En effet, lorsqu’un processeur a plusieurs sous-arbres et que ses sous-arbres n’apparaissent que dans les parties les plus hautes de l’arbre, il peut traiter plusieurs sous-arbres avant que les blocs de contribution de ceux-ci ne soient consomm´es. En d’autres termes, et si nous revenons `a l’exemple, le bloc de contribution produit par la racine du sous-arbre situ´e sur la branche la profonde (sous-arbre E sur P0) sera consomm´e longtemps apr`es sa g´en´eration. De ce fait il sera pr´esent en m´emoire lorsque le processeur traitera ses autres sous-arbres (qui peuvent ˆetre plus coˆuteux comme montr´e dans la figure 6.6). Ainsi, dans ce genre de configuration o`u un processeur (en l’occurrence P0) a plusieurs sous-arbres (E et G), il est parfois pr´ef´erable de faire commencer le processeur par le sous-arbre le plus coˆuteux, en l’occurrence G, (mˆeme si ce dernier n’est pas sur la branche la profonde). Il est donc important de permettre aux

processeurs de changer l’ordre donn´e par l’algorithme 6.1 pour am´eliorer le pic m´emoire.

BMWCRA 1 GUPTA3 MSDOOR SHIP 003 PRE2 TWOTONE XENON2 Strat´egie 1

Tab.6.7 – Pics de m´emoire active (en millions de r´eels) observ´es sur 16 processeurs avec SCOTCH avec et sans l’algorithme 6.1.

En ce qui concerne SCOTCH, nous pouvons voir que l’algorithme 6.1 (Strat´egie 3) peut ˆetre moins efficace en terme de comportement m´emoire que la strat´egie 1 (sur PRE2 par exemple). Ceci peut ˆetre expliqu´e par le fait que SCOTCH g´en`ere des arbres d’as-semblage bien ´equilibr´es (voir le chapitre 2). De ce fait, l’ordre donn´e par l’algorithme 6.1, qui est bas´e sur la distance `a la racine, n’est pas adapt´e vu que les sous-arbres sont tous `a des distances comparables de la racine. Une solution pour ce genre de probl`emes serait de prendre en compte la distribution des nœuds de l’arbre sur les processeurs dans l’algorithme6.1. Il est aussi important de prendre en compte la taille des sous-arbres dans le choix de l’ordre en se basant sur les r´esultats s´equentiels pr´esent´es dans le chapitre 3.