• Aucun résultat trouvé

2.3 Distribution de données

2.3.1 Modèles de partitionnement

Dans cette section, nous allons décrire les différents modèles qui peuvent être utilisés pour représenter les dépendances d’un problème sous forme de graphe ou d’hypergraphe. Lorsque les dépendances du problème sont représentées correctement dans l’un de ces modèles, le problème de partitionnement posé est alors clair et peut être résolu à l’aide de solveurs existants, ou tout du moins à l’aide d’algorithmes et d’heuristiques connus. Nous ne développerons pas, dans cet état de l’art, les méthodes d’implémentation et les heuristiques existantes pour résoudre les problèmes de partitionnement. Ce sujet n’est, en effet, pas abordé dans cette thèse. Nous pouvons toutefois noter ici que la plupart des partitionneurs existants implémentent le partitionnement par la méthode multilevel qui est décrite dans de nombreux travaux [8,49,78,123,125]. Cette méthode consiste dans

un premier temps à rendre le graphe plus grossier en fusionnant certains sommets, puis à partitionner ce graphe dans un deuxième temps, et enfin à revenir petit à petit au graphe initial en raffinant le partitionnement. L’état de l’art des modèles de partitionnement que nous allons décrire ici s’inspire notamment du travail de Hendrickson et Al [66]. Nous ne décrirons toutefois ici que deux de ces modèles, qui seront abordés et utilisés dans cette thèse.

2.3.1.1 Partitionnement de graphe

Le partitionnement d’un graphe G = (V, E) découpe l’ensemble des sommets V en p parties V0, . . . , Vp−1 telles que pour tout i ∈J0, pJ, Vi ⊂ V , Vi 6= ∅, et telles que pour tout i, j ∈ J0, pJ, si i 6= j , alors Vi∩ Vj = ∅. Notons que tout sommet v ∈ V peut être pondéré par ω(v), et chaque arête e ∈ E peut, elle aussi, être associée à un poids, que l’on appellera plutôt un coût et que l’on note c(e). Étant donné un sous-ensemble S de V , ω(S) est défini comme la somme des poids de chacun des nœuds de S. Le problème standard de partitionnement d’un graphe est alors d’effectuer ce partitionnement en respectant la contrainte d’équilibrage de charge suivante :

max

0≤i<pω(Vi) ≤ (1 + )ω(V )

p , (2.15)

où  > 0 représente le pourcentage de déséquilibre toléré, et en minimisant le nombre d’arêtes coupées dans ce partitionnement. Cette dernière métrique, qui vise à couper le moins d’arêtes possible lors du partitionnement, est aussi appelée la métrique edge-cut. Le partitionnement standard de graphe est notamment implémenté dans les partitionneurs Chaco [67], METIS [77] et Scotch [100].

La méthode standard de partitionnement de graphe a longtemps été la seule méthode utilisée. Toutefois ses limites ont été très largement évoquées et résumées dans les travaux de Hendrickson et Al [66]. La critique de cette approche repose sur deux faiblesses : la métrique edge-cut et le modèle en lui-même. Nous n’allons pas évoquer ici l’ensemble des faiblesses de la métrique et de la méthode de partitionnement, nous pouvons toutefois noter deux points que nous considérons comme importants, et qui sont résolus par la méthode de partitionnement d’hypergraphe décrite par la suite.

La première faiblesse que nous souhaitons évoquer concerne la métrique edge-cut. Cette métrique dénombre les arêtes qui doivent être coupées suite au partitionnement mis en place. La limite de cette métrique vient du fait qu’elle n’est pas proportionnelle au volume de communication nécessaire dans un programme parallèle. En d’autres termes, cette métrique ne modélise pas correctement les communications pour la plupart des problèmes de partitionnement. Prenons un exemple afin d’illustrer cette caractéristique. Étant donné le graphe représenté dans la figure 2.9, partitionné en trois parties, une pour chaque processeur P0, P1 et P2. Étant donné que chaque arête e ∈ E représente un coût de communication c(e) = 1 + 1 = 2 (afin de représenter une communication symétrique), alors un partitionnement de graphe standard trouverait la métrique edge-cut comme égale à c(e) × 5 = 10. Dans cet exemple, pourtant, nous pouvons observer que le sommet v2 est relié par deux arêtes à la partition du processeur P1, ce qui signifie qu’un unique

2.3. Distribution de données 37

envoi de v2 est nécessaire dans l’implémentation. En procédant ainsi pour les sommets v5 et v8 nous trouvons que le véritable volume de communication est égal à 7.

v1 v2 v3 v4 v8 v9 v6 v5 v7 P0 P1 P2

Figure 2.9 – Graphe donnant un exemple de partitionnement où la métrique edge-cut ne représente pas le volume de communication.

La deuxième faiblesse que nous évoquerons ici est le fait que la méthode standard de partitionnement de graphe ne permet d’exprimer que des dépendances symétriques. Une arête représente, en effet, un envoi de données des deux sommets la constituant. Ainsi la méthode de partitionnement manque d’expressivité pour certains problèmes asymétriques.

2.3.1.2 Partitionnement d’hypergraphes

Un hypergraphe H = (V, N ) est composé d’un ensemble de sommets, ou nœuds, noté V , et d’un ensemble N d’hyper-arêtes. Chaque hyper-arête est un sous-ensemble de V . Une hyper-arête est donc une généralisation de la notion d’arête dans un graphe, où plus de deux sommets de V peuvent être reliés entre eux. Dans le cas spécifique où chaque hyper-arête contient exactement deux sommets, on revient alors à la définition d’un graphe. Tout comme pour un graphe, tout sommet v ∈ V d’un hypergraphe peut être pondéré par ω(v), et chaque hyper-arête n ∈ N peut, elle aussi, être associée à un poids, ou un coût, que l’on note c(n). Ces poids sont généralement des réels positifs, mais dans cette thèse nous considérerons ces poids comme des entiers naturels. Étant donné un sous-ensemble S de V , ω(S) est défini comme la somme des poids de chacun des sommets de S.

Le partitionnement p-way d’un hypergraphe H = (V, N ) est défini par p sous-ensembles de V , V0, . . . , Vp−1 tels que pour tout i ∈ J0, pJ, Vi ⊂ V , Vi 6= ∅, et tels que pour tout i, j ∈ J0, pJ, si i 6= j , alors Vi ∩ Vj = ∅. Le problème de partitionne-ment d’un hypergraphe est alors de trouver un partitionnepartitionne-ment p-way qui satisfasse la

contrainte d’équilibrage (2.15), et qui minimise la métrique de coût suivante : X

n∈N

c(n)(λ(n) − 1), (2.16)

où λ(n) est le nombre de parties connectées à une même hyper-arête n ∈ N ,

λ(n) = |{Vi : 0 ≤ i < p et Vi∩ n 6= ∅}|. (2.17) Cette métrique, que l’on cherche à minimiser, est appelée la métrique-(λ − 1).

Le premier modèle de partitionnement d’hypergraphe est apparu dans les travaux de Çatalyürek et Al [26] . Son efficacité pour modéliser certains problèmes de parti-tionnement a été démontrée [28]. L’avantage principal de ce modèle est sa capacité à représenter exactement le volume de communications, ce qui n’est pas le cas en utilisant la métrique edge-cut du modèle de partitionnement de graphe. Reprenons, par exemple, le graphe G = (V, E) de la figure 2.9, et construisons un hypergraphe H = (V, N ) où |N | = |V |. L’ensemble des hyper-arêtes N est défini de façon à ce que chaque sommet vi∈ V corresponde à une hyper-arête hi∈ N qui contient viet l’ensemble de ses sommets voisins dans G. Par exemple, l’hyper-arête du sommet v2 contient alors les sommets v2, v8, v6 et v5. Cette hyper-arête contient donc des sommets des processeurs P2 et P1, son coût est donc de 2. Lors du partitionnement, on retrouve alors la métrique de coût de communication définie dans l’équation (2.16) qui est bien égale à 7 pour cet exemple. Pour finir, la méthode de partitionnement d’hypergraphe permet la représentation de problèmes asymétriques.