• Aucun résultat trouvé

Am´elioration des strat´egies dynamiques bas´ees sur la m´emoire

Dans cette section nous pr´esentons des m´ecanismes annexes `a la strat´egie de s´election d’esclaves pr´esent´ee dans la section pr´ec´edente. Comme montr´e dans la section pr´ec´edente, les strat´egies dynamiques doivent prendre en compte les tˆaches `a-venir sur chaque proces-seur dans un futur proche avant de prendre une d´ecision d’ordonnancement. Ces tˆaches sont caract´eris´ees par le fait qu’elle sont statiquement assign´es `a un processeur donn´e.

Pour assurer un bon comportement m´emoire, nous devons fournir des informations rela-tives `a ces tˆaches. Nous distinguerons dans ce qui suit les tˆaches qui appartiennent `a un

7.2. AM ´ELIORATION DES STRAT ´EGIES DYNAMIQUES BAS ´EES SUR LA M ´EMOIRE 99

sous-arbre (voir le chapitre 4) de celles qui appartiennent aux couches hautes de l’arbre.

Ainsi, deux m´ecanismes qui consistent `a injecter des informations statiques dans les choix dynamiques de l’algorithme 7.1 sont pr´esent´es.

7.2.1 Les sous-arbres

Les sous-arbres peuvent ˆetre critiques en terme d’occupation m´emoire (voir le cha-pitre 6). Ainsi, une strat´egie dynamique bas´ee sur la m´emoire doit prendre en compte le fait qu’un processeur est en train de traiter un sous-arbre pour ´eviter une trop grande augmentation de la taille de la m´emoire occup´ee sur l’esclave. En effet, les sous-arbres sont caract´eris´es par le fait que la m´emoire peut avoir de grandes variations pendant leur traitement. De plus, dans cette partie de l’arbre d’assemblage, le bas de l’arbre en l’oc-currence, les tˆaches ne sont pas tr`es coˆuteuses et cela implique des variations importantes de la m´emoire dans de faibles intervalles de temps. La strat´egie dynamique bas´ee sur la m´emoire doit alors ˆetre au courant du fait qu’un processeur est en train de traiter un sous-arbre. Ainsi, lorsqu’un processeur commence le traitement d’un sous-arbre, il envoie le coˆut m´emoire de l’int´egralit´e du sous-arbre `a tous les autres processeurs. `A la r´eception d’un tel message, chaque processeur ajoute le coˆut du sous-arbre re¸cu dans le message `a la taille de la m´emoire occup´ee sur le processeur ´emetteur. Ainsi, cette strat´egie conser-vatrice permet d’´eviter les probl`emes m´emoire dˆus aux sous-arbres. Une description du m´ecanisme est donn´ee dans l’algorithme 7.2. Il est important de signaler que pour ´eviter de comptabiliser deux fois la m´emoire occup´ee par le sous-arbre, la taille occup´ee par le sous-arbre `a chaque instant est retranch´ee de la taille de la m´emoire occup´ee sur chacun des processeurs. Ce m´ecanisme suppl´ementaire n’est pas d´ecrit dans l’algorithme7.2pour des raisons de clart´e.

Algorithme 7.2 Gestion dynamique des sous-arbres.

Initialisation :

Construire le tableaussarbr contenant le pic de chacun des sous-arbres ; Au d´ebut du sous-arbre i :

Envoyer un message de type maj ssarbr contenant ssarbr[i] `a tous les autres proces-seurs ;

A la fin du sous-arbre` i :

Envoyer un un message de type maj ssarbr contenant −ssarbr[i] `a tous les autres processeurs ;

A la r´` eception d’un message maj ssarbr en provenance du processeur Pi : mem[i] = mem[i] + contenu du message ;

Enfin il est `a noter que cette strat´egie de gestion dynamique des sous-arbres doit ˆetre combin´ee `a un m´ecanisme de r´eduction statique de la taille des sous-arbres (voir la section 6.4.2du chapitre 6).

7.2.2 Nœuds du haut de l’arbre

Concernant les nœuds du haut de l’arbre, c’est-`a-dire les nœuds n’appartenant pas `a des sous-arbres, nous devons ˆetre capables, au niveau dynamique, d’anticiper l’activation d’un nœud. En effet, tout processeur i doit ´eviter de s´electionner un processeur j pour une tˆache esclave si ce dernier va commencer dans un futur proche une tˆache maˆıtre qui peut avoir un coˆut m´emoire important. Consid´erons par exemple la situation pr´esent´ee dans le figure7.5 dans laquelle le processeurP0 va traiter dans un futur proche un nœud de type 1. Une augmentation du pic m´emoire peut ˆetre observ´ee si le processeur P0 est s´electionn´e comme esclave (voir la figure7.5(a), dans laquelle la ligne pointill´ee repr´esente le pic m´emoire depuis le d´ebut de la factorisation).

P0 P2 P0 P2 P0 P2

Mémoire initiale Mémoire envoyée par P1 Coût mémoire de la tâche maître

(a) Sans m´ecanisme de pr´ediction

P0 P2 P0 P2

Mémoire Mémoire

Pic mémoire Pic mémoire

Éstimation du coût mémoire de la tâche maître à-venir

P0 P2

Mémoire initiale Mémoire envoyée par P1 Coût mémoire de la tâche maître

(b) Avec m´ecanisme de pr´ediction

Fig. 7.5 – Situation critique lors du traitement d’un nœud du haut de l’arbre.

Afin d’´eviter ce genre de situations critiques, il est n´ecessaire de pr´edire l’activation de telles tˆaches. Ceci peut ˆetre fait simplement grˆace `a la structure de l’arbre d’assemblage.

En effet, un nœud devient activable lorsque tous ses fils ont ´et´e trait´es. De ce fait si chaque processeur traitant un des fils du nœud envoie un message au processeur en charge p`ere lorsqu’il commence son traitement, le processeur charg´e du p`ere saura que la tˆache associ´ee au p`ere va devenir activable dans un futur proche. Il peut alors envoyer le coˆut m´emoire de cette tˆache `a tous les autres processeurs. De plus, si plus d’une tˆache est dans ce cas (i.e. activables dans un futur proche), le processeur envoie le coˆut m´emoire de la tˆache, dans l’ensemble des tˆaches qui deviendront activables dans un futur proche, ayant les plus gros besoins m´emoire. Enfin, d`es que la tˆache est activ´ee, le processeur concern´e envoie le nouveau coˆut correspondant `a la tˆache ayant les plus gros besoins m´emoire et