Академический Документы
Профессиональный Документы
Культура Документы
Algorithmique parallle 1
ENSEIRB
MISD (Multiple Instruction Single Data) Il y a plusieurs flots dinstructions agissant sur un seul flot de donnes. On a n > 1 processeurs partageant une unique mmoire. A chaque tape de manire synchrone, une donne est traite paralllement par les n processeurs qui excutent chacun une instruction spcifique. Pas simplmentation pratique.
-1-
Esnard Aurlien
Algorithmique parallle 1
ENSEIRB
P1 M Pn 1 flot de donnes
UC1
SIMD (Single Instruction Multiple Data) On a n processeurs tous identiques ayant chacun une mmoire locale, o lon peut stocker des donnes et des instructions. P1 + M1 UC Pn + Mn 1 flot dinstructions n flots de donnes
Tous les processeurs excutent la mme instruction ou le mme programme (SPMD) stock en mmoire locale sur des donnes diffrentes. Les processeurs fonctionnent de manire synchrone ; les instructions peuvent tre simples ou complexes ; seul un sous-ensemble des processeurs peut avoir excuter une instruction. Ce modle est efficace surtout si on a un flot rgulier sur des donnes rgulires (auxquelles on accde de manire prvisible). Souvent les processeurs doivent communiquer pour schanger des rsultats intermdiaires, ce qui ncessite une coordination des activits. Ceci se fait de deux manires : soit un utilisant de la mmoire partage (SM), soit en utilisant un rseau dinterconnexion.
Mmoire partage (SM)
Cest le modle PRAM (parallel Random Access Machine). Les n processeurs utilisent une SM pour changer des donnes (une tape lmentaire de complexit). Au cours du temps les n processeurs vont accder en lecture et / ou criture en SM, ce qui pose un problme de concurrence des accs. On distingue 4 modle de concurrences : EREW (Exclusive Read Exclusive Write) CREW (Concurent Read Exclusive Write) ERCW (Exclusive Read Concurent Write) CRCW (Concurent Read Concurent Write)
-2-
Esnard Aurlien
Algorithmique parallle 1
ENSEIRB
A priori, il ny a pas (du point de vue algorithmique) de problmes pour la lecture concurrente. En criture, on doit fixer une rgle pour grer la concurrence Les modles de calculs thoriques concurrents se ralisent en EREW avec une pnalisation de complexit en O(log2(n )) sur n processeurs. Le modle mmoire partage est thoriquement trs puissant, mais peu raliste ! En effet, on ne prend pas en compte la complexit globale du circuit daccs la mmoire qui dpend du nombre de processeurs n partageant cette mmoire et de la taille m de la mmoire. Problme si n et m sont grands ! Traditionnellement, on a n < 64 et m de lordre du Go. Une solution pour diminuer le cot consiste diviser la mmoire en r blocs de taille m/r chacun. La concurrence se fait uniquement au niveau des blocs
Rseau dinterconnexion
Chaque processeur dispose dun mmoire locale. Chaque paire de processeurs est connect par un lien bidirectionnel et chaque tape du calcul, un processeur quelconque Pi peut recevoir une donne de Pj et envoyer une donne vers Pk. La topologie du rseau dinterconnexion (chane, grille 2D, arbre binaire, mlange parfait, cube) dtermine la complexit des communications. MIMD Cest le modle le plus gnral. Il y a n processeurs avec n flots dinstructions distincts et n flots de donnes distincts. Les changes inter-processeurs se font par une mmoire partage ou par un rseau dinterconnexion.
UC1
P1 + M1
Pn + Mn n flots de donnes
Chaque processeur excute son propre programme sur ses propres donnes, et chacun rsout un sous-problme diffrent du problme original. Fonctionnement asynchrone, sans horloge globale. La coordination des activits se fait via une mmoire partage ou via un rseau coupl faiblement
-3-
Esnard Aurlien -
Algorithmique parallle 1
ENSEIRB
On introduit le speed-up ou lacclration de lalgorithme parallle. SpeedUp(n )= On introduit le cot de lalgorithme parallle.
c(n )= p(n )t(n )
Si tous les processeurs excutent exactement le mme nombre doprations, c(n ) est exactement le nombre total doprations, faits par tous les processeurs. Sinon, c(n ) est un majorant de ce nombre. La diffrence entre c(n ) et w(n ) reprsente loverhead d la gestion du paralllisme.
t0(n )=c(n ) w(n )0
Si c(n ) est asymptotiquement quivalent w(n ) , on dira que lalgorithme parallle est cot optimal. En dautres termes, un algorithme parallle nest pas cot optimal si il existe un algorithme squentiel dont la complexit est asymptotiquement infrieur son cot. On introduit aussi lefficacit qui est un rendement. Eff (n )= SpeedUp(n) 1 p(n )
1
Si p(n ) est constant, alors t0(n ) est constant. Si p(n ) est constant et n croissant, alors Eff (n ) est croissante. On a une granularit plus grosse et des processeurs mieux utiliss. Si n est constant et p(n ) croissant, alors Eff (n ) est dcroissante. Paradoxalement, le meilleur rendement est obtenu en squentiel (pas le meilleur temps) ! On peut chercher la relation entre la taille du problme n et le nombre de processeurs p(n ) pour maintenir une efficacit constante Eff (n )= E .
w(n )= E t0(n ) 1 E
( )
On tudie cette relation en faisant varier n et p(n ) donc t0(n ) . On en dduit lextensibilit de lalgorithme parallle ou scability.
-4-
Esnard Aurlien
tape j ; Fin Faire
Algorithmique parallle 1
ENSEIRB
Slection
Introduction
Etant donn un ensemble S dentiers ayant n lments et un entier k, compris entre 1 et n. Dterminer le kime plus petit lment de S. La borne infrieure de la complexit squentielle optimale est O(n ) car on doit obligatoirement consulter au moins une fois tous les lments de S.
% tape 4 % Construire 3 sous-squences E1, E2, E3 dlments de E respectivement infrieurs, gaux et suprieurs m ; % tape 5 % Si E1 l Alors Seq _ Select(E1,l, x ) ; Sinon Si E1 + E2 l Alors x=m ; Sinon Seq _ Select(E3,l E1 E2 , x ) ;
-5-
Esnard Aurlien
Fin Procdure
Algorithmique parallle 1
ENSEIRB
Dans un algorithme de type divide and conquer, on divise le problme original en un sousproblme de la mme nature, de plus petite taille et indpendant. Ltude thorique de la complexit squentielle montre que la valeur optimale de q est 5 ! On a alors un algorithme squentiel optimal pour la slection, en O(n ) .
Le Broadcast parallle se fait en un temps constant ; complexit globale en O(log2(N )) . Calcul des sommes prfixes N processeurs Pi possdent chacun une valeur ai. Chaque processeur doit calculer les sommes prfixes
a
j =1
Esnard Aurlien
Algorithmique parallle 1
ENSEIRB
Pour j de 0 log 2(N )1 Faire Pour i de 2 j +1 N Faire en parallle { % excut par Pi % Lire ai 2 j de Pi 2 j via la SM ;
ai =ai + ai 2 j ; }
Cette algorithme est valable pour nimporte quelle opration binaire associative.
sous-squences S de longueur
1 x
i
Faire en parallle
1 x
% excut par Pi %
( )
M[i] = mi ; % tape 3 %
Parallel _ Select(M,M /2,m) ;
% tape 4 % Chaque processeur Pi dcoupe Si en 3 sous-squences Li, Ei, Gi dlments infrieurs, gaux et suprieurs m ;
-7-
Esnard Aurlien
Algorithmique parallle 1
Les sous-squences Li, Ei, Gi sont regroupes en parallle pour donner L, E, G (utilisation de All_Sums pour le calcul des adresses partir de la taille de chacune des sous-squences) ; % tape 5 % Si Lk Alors Parallel _ Select(L,k,z ) ; Sinon Si L + E k Alors z=m ; Sinon Parallel _ Select(G,k L E ,z ) ; Fin Procdure
ENSEIRB
On dtermine t(n)=O(n x ) et c(n)=t(n) p(n)=O(n x )O(n1 x ) ; donc c(n)=O(n) . On a un cot optimal grce ladaptabilit du nombre de processeurs par rapport la taille du problme !
Exemple
On prend n = 29 et on cherche le k = 21me plus petit lment avec N = 5 processeurs en SIMD-SM-EREW. Avec n1 x = N , on obtient 1x=0.47796 . On en dduit la taille des soussquences que lon affecte chaque processeur, soit n x =6 .
S = [3 14 16 20 8 31| 22 12 33 1 4 9 | 10 5 13 7 24 2 | 14 26 18 34 36 25 | 14 27 32 35 33]
On obtient rcursivement avec 51x =2 processeurs llment mdian m = 14. Chaque processeur construit [Li | Ei | Gi]. [L1 | E1 | G1] = [3 8 | 14 | 16 20 31] [L2 | G2] = [12 1 4 9 | 22 33] [L3 | G3] = [10 5 13 7 2 | 24] [E4 | G4] = [14 | 26 18 34 36 25] [E5 | G5] = [14 | 27 32 35 33] Puis on en dduit L, E, G. [3 8 12 1 4 9 10 5 13 7 2 | 14 14 14 | 16 20 31 22 33 24 26 18 34 36 25 27 32 35 33] Comme k > E + G =11+3 , on cherche rcursivement llment sur S = G, avec n = 15, k = 31
11 3 = 7 et n x =3 processeurs. On construit des sous-squences de taille 5.
On obtient rcursivement m = 26 par appel Seq_Select ; puis on construit L, E, G. [16 20 22 24 18 25 | 26 | 31 34 36 27 32 35 33] Comme k = L + E , 26 est la solution !
-8-
Esnard Aurlien
Algorithmique parallle 1
ENSEIRB
Fusion
Introduction
On considre A={a1 ,a2,L,ar } et B={ 1 ,b2 ,L,bs } deux squences dentiers tris par ordre b croissant. On veut construire une squence C de taille r + s contenant A et B. Lalgorithme classique squentiel qui a une complexit linaire est optimal car tout lment de A et de B doivent tre examin au moins une fois.
On suppose que les deux squences contiennent deux lments fictifs ar +1 et bs +1 de valeur + .
Procdure Seq _ Merge( A, B,C ) i =1 ; j = 1 ; Pour k de 1 r + s Faire Si ai < bj Alors ck = ai ; i++ ; Sinon ck = bj ; j++ ; Fin Pour Fin Procdure
On a une complexit en O(r + s )=O(n) si s = r = n. On a donc lalgorithme squentiel optimal. On considre S ={s1 ,s2,L,sn } une squence trie et x un nombre donn. La procdure renvoie lindice k, compris entre 1 et n, tel que x=sk ou 0 si xS .
Recherche binaire (dichotomie)
-9-
Esnard Aurlien
Algorithmique parallle 1
Procdure Recherche_ Binaire(S, x,k ) i =1 ; h = n ; k =0 ; Tant Que i k Faire
m=(i +k )/ 2 ;
ENSEIRB
Si x = sm Alors k = m ; exit ; Sinon Si x < sm Alors k = m - 1 ; Sinon i = m +1 ; Fin Tant Que Fin Procdure
On a une complexit en O(log2 S ) . Algorithme parallle en CREW Soit N le nombre de processeurs. On suppose N r s . Lalgorithme se droule en trois tapes. 1) On dtermine N 1 lments de A dcoupant la squence en N sous-squences de tailles gales ; on appelle A la squence de ces N 1 lments. On fait la mme chose pour B. 2) On fusionne A et B dans une squence V possdant 2N - 2 triplet vi de la forme (lment, indice dans A ou B, squence dorigine). 3) Fusion de A et B dans C. Les indices des lments de A et de B indiquant o chaque processeur commence la fusion sont calculs en parallle et stock dans un tableau Q de couples (processeur, indice).
Procdure Crew_ Merge( A, B,C ) % tape 1 % Pour i de 1 N - 1 Faire en parallle % excut par Pi %
a'i =a b'i =b
r (in ) ;
s (in ) ;
% tape 2 % % Placement de ai dans V % Pour i de 1 N - 1 Faire en parallle % excut par Pi % Recherche dans B du plus petit indice j tel que ai < bj en utilisant une adaptation de Recherche_Binaire ; Si j existe (j 0) Alors Vi + j 1= a'i ,i, A ; Sinon Vi + N 1= a'i ,i, A ;
- 10 -
Esnard Aurlien
Fin Pour
Algorithmique parallle 1
ENSEIRB
% Placement de bi dans V % Pour i de 1 N - 1 Faire en parallle % excut par Pi % Recherche dans A du plus petit indice j tel que bi < aj en utilisant une adaptation de Recherche_Binaire ; Si j existe (j 0) Alors Vi + j 1= b'i ,i,B ; Sinon Vi + N 1= b'i ,i,B ; Fin Pour % tape 3 %
Q(1)=(1,1) ;
Pour i de 2 N Faire en parallle % excut par Pi % Si V2i 2 = a'k ,k, A Alors Recherche dans B du plus petit indice j tel que ak < bj ;
Q(i )= k r , j ; N
( )
(
Sinon % V2i 2 = b'k ,k,B % Recherche dans A du plus petit indice j tel que bk < aj ;
Q(i )= j,k s N
( ) ;
Fin Pour Pour i de 2 N Faire en parallle % excut par Pi % { On fusionne en utilisant Seq_Merge les deux sous-squences commenant en x dans A et en y dans B si Q(i) = (x,y), dans C partir de la position x + y 1. La fusion se poursuit jusqu ce que lon trouve dans A et dans B un lment suprieur V2i (pour i N 1) ou alors jusqu ce quil ny ait plus dlments dans A ou dans B (i = N). } Fin Procdure
On se place dans le cas o r = s = n ; et on a t(2n)=O log(n)+ n do c(2n)=O(n) si N N << n . Cot optimal ! La concurrence en lecture se fait au niveau de recherche binaire. log(n)
- 11 -
Algorithmique parallle 1
ENSEIRB
Tri
Introduction Un rseau ddi au tri
()
Tri sur rseau linaire Algorithme de tri avec un modle CRCW SM (SPMD) Algorithme de tri avec un modle CREW SM (SPMD)
- 12 -