• Aucun résultat trouvé

3.10 Remarques

3.10.2 Extension parall`ele

Les r´esultats pr´esent´es dans ce chapitre concernaient le traitement s´equentiel de l’arbre associ´e `a la m´ethode multifrontale. Dans le cas parall`ele, les algorithmes peuvent ˆetre appliqu´es sur les parties s´equentielles de l’arbre. Concernant les parties parall`eles, dans lesquelles les tˆaches elles-mˆeme sont souvent parall`eles, l’algorithme sera tr`es d´ependent de la gestion m´emoire et de le gestion du parall´elisme de l’impl´ementation consid´er´ee.

Une approche g´en´erale serait de modifier statiquement la structure de l’arbre de ma-ni`ere `a ins´erer des nœuds fictifs entre un p`ere est ses fils. Ces nœuds seront en g´en´eral de taille inf´erieure `a celle du p`ere. De plus, ces nœuds ne seraient pas “factorisables”

mais seraient juste utilis´es pour l’assemblage interm´ediaire des blocs de contribution des nœuds fils. Une autre approche consisterait `a anticiper l’allocation du p`ere en fonction de crit`eres pouvant ˆetre plus dynamiques.

3.11 Conclusion

Nous avons pr´esent´e dans ce chapitre un algorithme visant la minimisation de la m´emoire utilis´ee par la m´ethode multifrontale. Dans le cas de la m´emoire active, nous avons pr´esent´e un algorithme optimale pour la minimisation de la taille de la m´emoire active utilis´ee par la m´ethode. Cette approche est bas´ee sur l’anticipation de certaines tˆaches dans le but de minimiser la m´emoire. Les r´esultats exp´erimentaux pr´esent´es dans ce chapitre ont permis de voir le potentiel de notre algorithme. Cet algorithme a pour but d’ˆetre utilis´e dans un sch´ema d’ex´ecution out-of-core o`u les facteurs seraient stock´es sur disque d´es leur g´en´eration et o`u la minimisation de la m´emoire active prend tout son sens.

Concernant le cas in-core, il est n´ecessaire de minimiser la m´emoire totale. De ce fait, il est n´ecessaire de prendre en compte la taille des facteurs pour la g´en´eration d’un parcours d’arbre qui minimiserait la m´emoire. Nous avons propos´e un algorithme qui pro-duit un parcours optimal en terme de pic de m´emoire totale. Des r´esultats exp´erimentaux satisfaisants ont pu ˆetre obtenus avec notre algorithme.

Enfin, nous avons ´etudi´e l’extension de notre approche `a des impl´ementations sp´eci-fiques ayant certaines propri´et´es sur le comportement m´emoire. Il est apparu que notre approche pour la minimisation de la m´emoire active donne de tr`es bons r´esultats dans le cas o`u l’assemblage du dernier fils (avant l’allocation du p`ere) peut ˆetre fait «sur place» dans le nœud p`ere.

Cette ´etude n’ayant ´et´e finalis´ee qu’`a la fin de la th`ese, une strat´egie compl`ete per-mettant d’anticiper l’activation du p`ere n’a pas ´et´e impl´ement´ee au niveau de l’´etape de factorisation num´erique de notre environnement d’exp´erimentation, MUMPS. Les r´esultats des chapitres qui suivent utilisent ainsi le sch´ema classique (sans pr´e-allocation du p`ere) o`u la m´emoire est cependant minimis´ee en appliquant l’algorithme3.1.

Deuxi` eme partie

Etude du comportement m´ ´ emoire de la m´ ethode multifrontale parall` ele

59

Chapitre 4

Sch´ ema parall` ele pour la m´ ethode multifrontale

Apr`es les ´etudes du cas s´equentiel pr´esent´ees dans les chapitres pr´ec´edents, nous nous int´eressons au cas parall`ele. L’objectif de ce chapitre est de d´ecrire la m´ethode multi-frontale parall`ele telle qu’elle est impl´ement´ee dans la biblioth`eque logicielleMUMPS. Cette approche est bas´ee sur une combinaison de strat´egies d’ordonnancement statiques et dy-namiques que nous allons pr´esenter. Ainsi, nous allons commencer dans la section 4.1 par d´ecrire le parall´elisme dans la m´ethode multifrontale. Puis, nous pr´esenterons dans la section 4.2 les aspects statiques de l’ordonnancement. Enfin, dans la section 4.3, nous d´ecrirons les ordonnanceurs dynamiques utilis´es pour la gestion du parall´elisme.

4.1 Parall´ elisme dans la m´ ethode multifrontale

La m´ethode multifrontale parall`ele est bas´ee sur une combinaison de techniques d’or-donnancement statiques, i.e. d´etermin´ees lors de la phase d’analyse de la matrice, et dynamiques, i.e. d´efinies au fur et `a mesure de l’´evolution du calcul. Une description d´etaill´ee de ces algorithmes est donn´ee dans [7] et [5]. `A chaque nœud de l’arbre d’assem-blage est associ´e un type de parall´elisme. La figure4.1 donne un exemple de distribution de tˆaches. Il existe trois types de parall´elisme dans la m´ethode qui correspondent `a trois types de nœuds dans l’arbre d’assemblage :

– Le premier type de parall´elisme est celui qui est induit par l’arbre d’assemblage : les branches ind´ependantes de l’arbre peuvent ˆetre trait´ees en parall`ele, ind´epen-damment les unes des autres. Un nœud de type 1 est assign´e statiquement `a un processeur qui peut le traiter d`es la r´eception des blocs de contributions envoy´es par les processeurs assign´es `a ses fils.

Les feuilles de l’arbre sont des nœuds de type 1. De plus, les nœuds du bas l’arbre sont regroup´es en sous-ensembles, sous-arbres, assign´es aux diff´erents processeurs.

Les nœuds appartenant `a ces sous-arbres sont tous de type 1. La d´etermination des sous-arbres est effectu´ee `a l’aide d’un algorithme descendant [31]. Une phase

61

P3

Fig. 4.1 – Exemple de distribution d’un arbre d’assemblage sur quatre processeurs.

d’affectation sous-arbre (ensemble) `a processeur est ensuite effectu´ee en ayant pour objectif d’´equilibrer la charge de travail des sous-arbres sur les processeurs. Une description plus d´etaill´ee de ce processus est donn´ee en section 4.2.1.

– Le second type de nœuds correspond `a un parall´elisme intra-nœud dans lequel une parall´elisation sur une dimension (1D) du calcul sur la matrice frontale est effectu´ee.

En effet, pour certains nœuds de l’arbre d’assemblage, la matrice frontale est trop grande pour pouvoir ˆetre trait´ee sur un seul processeur, ou bien le parall´elisme `a ce niveau de l’arbre devient trop limit´e. Dans ce cas, la matrice frontale est distri-bu´ee par blocs de lignes sur plusieurs processeurs. Un processeur maˆıtre est choisi statiquement pendant la phase d’analyse symbolique (voir la section4.2.2), tous les autres processeurs (esclaves) qui participent au traitement de ce nœud sont choisis dynamiquement pendant la factorisation en fonction de leur charge. Le processeur maˆıtre est responsable de la factorisation du bloc des variables totalement agr´eg´ees (voir la section 2.1) alors que les esclaves sont responsables des mises-`a-jour cor-respondantes sur leur blocs respectifs. Une description d´etaill´ee de la strat´egie de s´election d’esclaves est donn´ee dans la section 4.3.1.

Le processeur maˆıtre choisit dynamiquement les processeurs esclaves selon leur charge de calcul et il leur affecte une nouvelle tˆache. La m´etrique de charge est le nombre d’op´erations en virgule flottante qui doivent ˆetre effectu´ees, o`u seules les op´erations correspondant au processus de factorisation sont prises en compte (elles sont d’un ordre de magnitude plus nombreuses que les op´erations n´ecessaires

`a l’assemblage).

– Le troisi`eme type de parall´elisme, qui est un parall´elisme bi-dimensionnel (2D) concerne le nœud racine de l’arbre. Ce nœud est alors trait´e par tous les processeurs en utilisant ScaLAPACK [19] avec une distribution 2D cyclique.