techniques de decomposition - e

publicité
 On
a vu que la première étape de la
conception et l'implémentation d une
solution parallèle pour un problème donné
est la décompose de ce problème on taches.
 Ces taches peuvent être exécutées en
parallèle.
 il n'existe pas une technique générale de
décomposition.
 Les techniques présentées en suit peuvent
être appliquées sur une large classe des
problèmes
 Applique
le principe de (diviser pour gagner)
 On décompose le problème en sous
problèmes.
 D’une manière récursive les sous problèmes
sont décomposés en sous problèmes.
 ce processus termine lorsque on obtient des
taches indécomposables.
L'algorithme de tri rapide d'un tableau ou d’une
liste A est un algorithme qui favorise la
décomposition récursive
 On commence par le choix d'un élément pivot X.
 On décompose la liste Q en deux listes A0 et A1
les éléments de A0 <X
les éléments de A1 >=X
 Les listes A0 et A1 sont triées on applique
récursivement les étapes précédentes.
 Si on a un élément dans la liste le processus
s'arrête.

 la
recherche de plus petit élément d'un
tableau est un problème qui peut être résolu
avec la décomposition récursive.
 La version séquentielle de l'algorithme n'est
pas de type diviser pour gagner mais on peut
la transformer pour avoir une décomposition
récursive.
1. procedure SERIAL MIN (A; n)
2. begin
3. min = A[0];
4. for i := 1 to n -1 do
5. if (A[i] < min) min := A[i];
6. endfor;
7. return min;
8. end SERIAL MIN















1. procedure RECURSIVE MIN (A; n)
2. begin
3. if (n = 1) then
4. min := A[0];
5. else
6. lmin := RECURSIVE MIN (A; n/2);
7. rmin := RECURSIVE MIN (&(A[n/2]); n-n/2);
8. if (lmin < rmin) then
9. min := lmin;
10. else
11. min := rmin;
12. endelse;
13. endelse;
14. return min;
15. end RECURSIVE MIN
 Identifier
les données sur lesquelles les calculs
sont effectués.
 Partitionner ces données à travers diverses
tâches.
 Cette séparation provoque une décomposition
du problème.
 Les données peuvent être partitionnées de
différentes manières, cela a un impact critique
sur la performance d'un algorithme parallèle.
 Souvent,
chaque élément de la sortie peut
être calculée de façon indépendante des
autres (mais simplement en fonction de
l'entrée).
 Une partition de l'ensemble des données de
sortie décompose le problème naturellement.
 Considérons
le problème de la
multiplication de deux matrices A et B de
nxn éléments pour produire la matrice C.
 La sortie de la matrice C peut être divisé
en quatre tâches, comme suit
 La
decomposition des donnees de sortie nest
pas unique
 Par exemple on a le probleme de calcul de
produit de deux matrices on peut le
decomposer comme suit :
 La
décomposition des données de sortie est
applicable si le calcul de ces sorties est en
fonction des données d'entrée
 Ce n'est pas le cas toujours ( les algorithmes
de tri, le calcul de Min…..)
 Dans ce cas on peut décomposer les données
d'entrée.
 On peut crier une tache pour chaque partie
 On exécute les taches avec le plus possible
des données locales.
 Rassembler les résultats partielles pour
produire le résulta final
Téléchargement