Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
parallèle
1.Modèle parallèle.
1. Définitions de bases.
2. Description de modèles.
3. Comparaison des puissances des modèles.
Définition
Machine parallèle: ensemble de processeurs qui
sont capables de coopérer afin de résoudre un
problème.
Ceci inclut:
– les super ordinateurs parallèles (milliers de processeurs).
• connection Machine-5: 32 à 65536 nœuds
• Cray T3E : 128 à 2048 nœuds
• Top 500 : http://www.top500.org
– les grappes (ou clusters).
Machines Parallèles
• Mémoires
– Partagée.
– ou distribuée.
• Types de commutation (communications de
circuits, de paquets, wormhole)
• Mode synchrone ou asynchrone.
Comment évaluer les algorithmes ?
• Temps d’exécution (Tp ): Différence entre le
moment où le premier processeur commence de
l’algorithme et le moment où le dernier
processeur termine.
j j j
Tp= max (Tcalculs +Tcoms +T attente )
Comment évaluer les algorithmes ?
• Facteur d’accélération (speed up) Ap:
rapport entre le temps d’exécution de l’algorithme
séquentiel optimal Ts et le temps d’exécution de
l’algorithme parallèle sur p processeurs.
Optimal si la surface
du rectangle vaut T s
Nombre de processeurs
1.2 Description des modèles
Modèle P-RAM
• P-RAM: Parallel Random Access Machine.
– Mémoire centrale partagée.
– Nombre non borné de processeurs
– Taille de la mémoire infinie.
Exemple:
Tableau : 1 3 2 7
Résultat: 1 4 6 13
Algorithme sur une P-RAM
(EREW).
•Algorithme récursif:
A = 1 2 3 4 5 6 7 8
Donnée:
A’ = 3 7 11 15
de A : X 3 X 10 X 21 X 36
Résultat:
de A’: 3 10 21 36
Algorithme sur une P-RAM
(EREW).
A = 1 2 3 4 5 6 7 8
Donnée:
A’ = 3 7 11 15
de A : 1 3 6 10 15 21 28 36
Résultat:
de A’: 3 10 21 36
Formalisation de l’algorithme
Entrée: table A de n = 2 kéléments
Sortie: table B de n = 2 kéléments tel que B[i]=Σ j=1
i A[j]
Envoi 6 6 + 15
=21
Résultat: 1 3 6 10 15 21 28 36 45
Formalisation de l’algorithme
Entrée: tableau T de n/p éléments.
Sortie: somme préfixe effectué sur les éléments de T.
O(log n) étapes
Théorème sur les puissances.
• Théorème: Tout algorithme sur une machine P-RAM
CRCW à p processeurs ne peut pas plus de O(log p)
fois plus rapide que le meilleur algorithme P-RAM
EREW.
• Idée de la preuve:
– Un pas d’un algorithme P-RAM CRCW à p
processeurs peut être simuler en O(log p) pas d’un
algorithme P-RAM EREW.
Récapitulatif.
Tout algorithme sur une machine P-RAM CRCW à p
processeurs ne peut pas plus de O(log n) fois plus
rapide que le meilleur algorithme P-RAM CREW.
Même résultat:
• pour les machines CREW et EREW.
• pour les machines CRCW et EREW.
Théorème de Brent
Soit A un algorithme
– comportant un nombre total m d’opérations,
– qui s’exécute en temps t,
– sur une P-RAM avec un nombre indéterminé de
processeurs,
min(a,b) max(a,b)
Réseau de tri-fusion
• Simplification: trier des listes de n=2 k éléments.
Algorithme de tri sur une suite (c1 ,c2 ,…,cn )
– trier(c1 ,c2 ,…,cn/2 ) et trier(cn/2+1,cn/2+2,…,cn ) en //.
– Fusionner les deux listes triées.
a(1)
a(2)
b(1)
b(2)
FUSION(1)
Construction du réseau fusion de deux
listes de même taille et déjà triées.
a(1) d(1) c(1)
a(2) d(2) c(2)
a(3) d(3) c(3)
a(4) d(4) c(4)
c(5)
a(2i-1) d(i+1)
a(2i)
:
c(2i)
b(1) e(1)
c(2i+1)
b(2) e(2)
b(3) e(3)
b(4) e(4)
FUSION(m)
b(2i-1) e(i)
FUSION(m+1)
b(2i) :
Construction du réseau tri.
TRI(n-1)
FUSION(n)
TRI(n)=
TRI(n-1)
Coût du réseau tri-fusion
• Pour un réseau de taille n=2m ,
• Temps = O(log n 2 )
2
• Nombre de comparateur = O(nlog n )
• Travail = O(nlog n 4)
Tri par transposition pair-impair
Réseau formé de lignes de comparateurs
a b
min(a,b) max(a,b)
Réseau de tri
de taille n=2p
Description : p copies de 2 lignes
• Ligne 1: p comparateurs
• Ligne 2: p-1 comparateurs
prenant en entrée p-1 paires de
fils 2i et 2i+1, 1 i p-1
• #de comparateurs =n(n-1)/2
8 7 6 5 4 3 2 1
Exemple:
7 8 5 6 3 4 1 2
7 5 8 3 6 1 4 2
5 7 3 8 1 6 2 4
5 3 7 1 8 2 6 4
3 5 1 7 2 8 4 6
3 1 5 2 7 4 8 6
1 3 2 5 4 7 6 8
1 2 3 4 5 6 7 8
Min
Réalise-t-il un tri?
Min
Min
Oui, car:
• Parcours du minimum Min
– Étape 1:0 ou 1 déplacement
vers la gauche. Min
– Chaque étape:
Min
1 déplacement vers la gauche.
Min
Min
A A
Réalise-t-il un tri? A A
Oui, car:
• Parcours du « 2ieme élément » Min A
– Étape 1: 0 ou 1 vers la
gauche, 1 vers la droite lors
de la rencontre du min.
– Chaque étape : 1
déplacement vers la gauche.
– Sauf deux, 0 déplacement
lors de la comparaison entre
lui et le min.
• Évaluation du parcours.
Coût du réseau tri pair-impair
• Pour un réseau de taille n=2m ,
• On obtient
Rang(5, J ) = 2, rang(10, J ) = 4,
Rang(12, J ) =4, rang(17, J ) = 7
R[ L, J ]=[ 2, 4, 4, 7 ]
Échantillonnage
• Une suite L est un bon échantillonnage (BE) d’
une suite J si pour tout k 1 éléments consécutifs
arbitraires de {-} L {+}, il y a au plus 2k+1
éléments de J.
• Exemple:
– J=[ 2, 3, 7, 8, 10, 14, 15, 17, 18, 21 ], L=[ 5, 10, 12, 17 ]
– L est un BE de J car pour k=1, il y a au plus 3 éléments
de J entre (-,5), (5,10), (10,12), (12,17), (17,-), pour
k=2,….
Fusion_assistée(J,K,L)
1. Partitionner J et K en |L|+1 sous-ensembles
J(i) et K(i) tel que, 1 i |L|+1
1. J(i)={j J, l i-1< j l i }
2. K(i)={k k, li-1< k li }
Exemple:
J =[ 2, 3, 7, 8, 10, 14, 15, 17, 18, 21 ]
L=[ 5, 10, 12, 17 ]
J(1)=[ 2, 3 ], J(2)=[ 7, 8, 10 ], J(3)=,
J(4)=[ 14, 15, 17 ], J(5)=[ 18, 21 ]
Fusion_assistée(J,K,L)
1. Partitionner J et K en |L|+1 sous-ensembles
J(i) et K(i) tel que, 1 i |L|+1
1. J(i)={j J, l i-1< j l i }
2. K(i)={k k, li-1< k li }
2. Fusionner en parallèle les sous-ensembles.
Pour tout i, 1 i |L|+1 faire en //
res i:= Fusion(J(i),K(i))
J =[ 2, 3, 7, 8, 10, 14, 15, 17, 18, 21 ]
Exemple: K=[ 1, 4, 6, 9, 11, 12, 13, 16, 19, 20]
L=[ 5, 10, 12, 17 ]
• L est
1 un BE de J et de K.
J(1)=[2,3] K(1)=[1,4] res1 =Fusion([2,3], [1,4] )
=[1,2,3,4],
J(2)=[7,8,10] K(2)=[6,9] res2 =Fusion([7,8,10], [6,9] )
=[7,8,9,10],
J(3)=, K(3)=[11,12] res 3 =Fusion(, [11,12] )
=[11,12],
J(4)=[14,15,17], K(4)= [13,16] res =Fusion([14,15,17], [13,16] )
4
=[13,14,15,16,17],
J(5)=[18,21], K(5)=[19,20] res5 =Fusion([18,21], [19,20])
Fusion_assistée(J,K,L)
1. Partitionner J et K en |L|+1 sous-ensembles
J(i) et K(i) tel que, 1 i |L|+1
1. J(i)={j J, l i-1< j l i }
2. K(i)={k k, li-1< k li }
2. Fusionner en parallèle les sous-ensembles.
Pour tout i, 1 i |L|+1 faire en //
res i:= Fusion(J(i),K(i))
3. Concaténer les résultats partiels.
J|K :=res1 res 2…res |L|+1
Évaluation du coût des trois
étapes de la fonction
Fusion_assistée(J,K,L).
• En supposant qu’on connaît
R[L, J], R[L, K], R[J, L], R[K, L] ,
Coût: O(1).
Évaluation du coût.
3. Concaténer les résultats partiels.
J|K :=res1 res2…res|L|+1
– Concaténation:
Hypothèse: connaissance R[L,J], R[L,K]
– Chaque élément l iL a un processeur
responsable P(li )de lui.
rang(li ,J|K)=rang(li ,J) +rang(li ,K) ;
range les éléments de resi à partir du
rang rang(li-1 ,J|K)+1.
Évaluation du coût des trois
étapes de la fonction
Fusion_assistée(J,K,L).
• En supposant qu’on connaît
R[L, J], R[L, K], R[J, L], R[K, L] ,
12345678
5678 1234
78 56 34 12
8 7 6 5 4 3 2 1
Au top 0, tous les nœuds
stockent une liste sauf les
Initialisation: feuilles qui stockent leur
élément.
8 7 6 5 4 3 2 1
Algorithme global.
• Au top 0, phase initialisation.
• Opération d’un nœud au top t+1,
– Recevoir X(t+1) et Y(t+1) de ses fils.
– val(t+1) = Fusion_assistée(X(t), Y(t),val(t))
• Envoyer à son père Z(t+1) ={z4 , z8 , z12 ,….} où
val(t+1)= {z1 , z2 , z3 ,…,zn }
Déroulement de l’algorithme.
• Dès qu’un nœud a reçu toute sa liste au top t
alors, il envoi, à son père,
– d’un élément sur 4 de val(t+1) au top t+1,
– d’un élément sur 2 de val(t+1) au top t+2,
– envoi de val(t+1) au top t+3.
• Et au top t+4, il ne fait plus rien….
Exemple du déroulement l’algorithme
de Cole
Vision locale
de l’algorithme 0
sur ce nœud Au top 0, les feuilles ont des listes triées de taille 2
Au top 1, ne rien faire
Au top 2, ne rien faire
val (3) Au top 3, val (3)= Fusion_assistée([8],[7],)
8 7
8 7 6 5 4 3 2 1
Exemple du déroulement l’algorithme
de Cole
78 56 34 12
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
Vision locale
de l’algorithme Au top 4, ne rien faire
sur ce nœud
Au top 5, il reçoit [8] et [6]
+ val(5) =Fusion_assistée([8],[6],)
8 6
78 56 34 12
8 7 6 5 4 3 2 1
Vision locale
de l’algorithme Au top 4, ne rien faire
sur ce nœud
Au top 5, il reçoit [8] et [6]
+ val(5) =Fusion_assistée([8],[6],)
val(5)=[6,8]
6,8
8 6
78 56 34 12
8 7 6 5 4 3 2 1
Vision locale
de l’algorithme Au top 4, ne rien faire
sur ce nœud
Au top 5, il reçoit [8] et [6]
+ val(5) =Fusion_assistée([8],[6],)
8 7 6 5 4 3 2 1
Remarque
• val(5) =Fusion_assistée([8],[6],) =[6,8]
• val(5) est un bon échantillonnage de
[7,8],[5,6].
Vision locale
de l’algorithme Au top 4, ne rien faire
sur ce nœud
Au top 5, il reçoit [8] et [6]
+ val(5) =Fusion_assistée([8],[6],)
8 7 6 5 4 3 2 1
Vision locale
de l’algorithme Au top 4, ne rien faire
sur ce nœud
Au top 5, il reçoit [8] et [6]
+ val(5) =Fusion_assistée([8],[6],)
8 7 6 5 4 3 2 1
Après le top 6, chaque nœud de niveau 3 a
calculé sa propre liste.
[5,6,7,8] [1,2,3,4]
78 56 34 12
8 7 6 5 4 3 2 1
Au top 7, il reçoit 8 et 4.
Au top 8, il reçoit [6,8] et [2,4]
Vision locale Au top 9, il reçoit [5,6,7,8] et
de l’algorithme [1,2,3,4].
sur ce nœud puis plus rien….
[5,6,7,8] [1,2,3,4]
78 56 34 12
8 7 6 5 4 3 2 1
Au top 7, il reçoit 8 et 4,
val(7)= Fusion_assistée([8],[4],) = [4,8]
[8] [4]
[5,6,7,8] [1,2,3,4]
Au top 7, il reçoit 8 et 4, val(7) = [4,8]
Au top 8, il reçoit [6,8] et [2,4]
val(8)= Fusion_assistée([6,8],[2,4],val(7)) = [2,4,6,8]
[4,8]
[6,8] [2,4]
[5,6,7,8] [1,2,3,4]
Au top 7, il reçoit 8 et 4, val(7) = [4,8]
Au top 8, il reçoit [6,8] et [2,4], val(8)= [2,4,6,8]
Au top 9, il reçoit [5,6,7,8] et [1,2,3,4]
val(9) = Fusion_assistée([5,6,7,8] , [1,2,3,4],val(8))
= [1,2,3,4, 5,6,7,8]
[2,4,6,8]
[5,6,7,8] [1,2,3,4]
[5,6,7,8] [1,2,3,4]
Au top 7, il reçoit 8 et 4, val(7) = [4,8]
Au top 8, il reçoit [6,8] et [2,4], val(8)= [2,4,6,8]
Au top 9, il reçoit [5,6,7,8] et [1,2,3,4]
val(9) = Fusion_assistée([5,6,7,8] , [1,2,3,4],val(8))
= [1,2,3,4, 5,6,7,8]
[1,2, 3,4,5,6,7,8]
[5,6,7,8] [1,2,3,4]
Au top 8, val(8)= [2,4,6,8], val(8)= [2,4,6,8],
Au top 9, envoi [8] et [16]
16 8
[10,12,14,16] [2,4,6,8]
Au top 8, val(8)= [2,4,6,8], val(8)= [2,4,6,8],
Au top 9, envoi [8] et [16]
val(9) = Fusion_assistée([8],[16],) =[8,16]
val(9) =[9,10,11,12,13,14,15,16] val(9)=[1,2,3,4, 5,6,7,8]
8,16
8,16 [4,8,12,16]
12,16 4,8
• Efficacité =1
4. Ordonnancement
1. Définition de bases.
2. Problème d’ordonnancements classiques
3. Ordonnancement avec les communications.
4.1 Définition de bases.
Graphe de tâches: Exemple.
• Résoudre le système linéaire: Ax=b
– Avec A=
T(5,5)
Définitions
• Soit G=(V,E,w) d’un graphe de tâches,
Sommets d’entrée Sommets de sortie
Prédécesseurs Successeurs
Ordonnancement: définition
• Un ordonnancement d’un graphe de tâches
G=(V,E,w) est une fonction de V
telle que, pour tout arc [u,v] E dans G,
on a (u)+ w(u) (v).
• Illustration:
tâche 1 tâche 2
Conséquence:
Soit G=(V,E,w) d’un graphe de tâches,
il existe un ordonnancement dans G si
et seulement si G est sans cycle.
T(5,5)
Résolution de Pb( ).
• Soit G=(V,E,w) d’un graphe de tâches,
• On définit un ordonnancement ASAP tel que
pour tout sommet v de V ,
ASAP (v)= NS(v)
T(5,5)
Conclusion de Pb( ).
• Construction d’une solution optimale de
Pb( ).
– calcul du paramètre NS pour chaque sommet.
Recherche d’heuristiques
Heuristiques gloutonnes.
• Stratégie « ne pas laisser délibérément un
processeur inactif » : c’est-à-dire, à chaque
instant, on alloue autant de tâches que
possible aux processeurs disponibles.
actif
P(1)
P(2)
P(3)
P(4)
Remarque
• Pour tout ordonnancement ,
p*MS(,p)=Idle +Seq
P(4)
T(5) T(3) T(2)
Remarque:
• Pourquoi T(1) n’a-t-il pas été exécuté avant ?
Car l’éxécution de la tâche T(2) n’est pas finie.
Ainsi de suite avec la tâche T(2), T(3)…
3 6
3 4 4
T(4) T(5) T(6) T(7) T(8)
T(1) 5
1 6
5
T(2) T(3) 3
3
2
T(4)
Comment comparer les deux
heuristiques?
• Fork Graph :
T(1) w
– CP : 2w+c c c
w
– MCP: 2w+c si w>c T(2) T(3) w
3w si w<c
• Join Graph :
w
– Même solution : 2w+c T(2) c T(3)
c
– Non optimal pour w<c
T(1)w
Comparaison des heuristiques.
• Théorique: garantir l’heuristique avec un
facteur d’approximation.