Вы находитесь на странице: 1из 12

Esnard Aurlien

Algorithmique parallle 1

ENSEIRB

Algorithmique parallle fondamentale Introduction & Notions de base


Introduction
Lobjectif du paralllisme est dobtenir de meilleur performance par rapport aux calculateurs classiques squentiel : Complexit en temps Pour un problme donn, aller plus vite, en exploitant plus de processeurs. Complexit en espace Pour traiter des problmes plus gros, en utilisant plus de mmoires.

Modles du calcul parallle


Un algorithme consiste en un flot dinstructions excuter sur un flot de donnes. Il existe 4 modles de calculs, selon quil y a un ou plusieurs flots. SISD (Single Instruction Single Data) Cest le modle squentiel classique (Von Neumann). Unit de contrle 1 flot dinstructions Processeur 1 flot de donnes Mmoire

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

UCn n flots dinstructions

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)

Echange inter processeurs

-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

Echange inter processeurs

UCn n flots dinstructions

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

Analyse des algorithmes parallles


Pour un problme de taille n, on note : t(n ) , le temps dexcution parallle au pire des cas pour un problme de taille n ; w(n ) , le temps dexcution squentielle (au pire) du meilleur algorithme squentiel pour le problme de taille n;

-3-

Esnard Aurlien -

Algorithmique parallle 1

ENSEIRB

p(n ) , le nombre de processeurs pour rsoudre en parallle le problme de taille n.

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 )

w(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

t0(n ) Eff (n )=1+ w(n )

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.

Expression des algorithmes parallles


On utilise un langage de description algorithmique tendu pour dcrire des oprations parallles. Si plusieurs tapes doivent se faire en parallle
Faire tapes i j en parallle tape i ;

-4-

Esnard Aurlien
tape j ; Fin Faire

Algorithmique parallle 1

ENSEIRB

Si plusieurs processeurs doivent excuter le mme type doprations en mme temps


Pour i de j k faire en parallle { oprations excutes par le processeur Pi } Fin Pour

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.

Algorithme squentiel optimal


On a un algorithme rcursif de type divide and conquer, Seq _ Select(E,l, x ) avec E lensemble sur lequel on fait la slection, l le rang de llment recherch, x sa valeur. On se fixe un entier q suffisamment petit correspondant une taille en dessous de laquelle on accepte de faire un tri, de fait en temps constant par rapport n.
Procdure Seq _ Select(E,l, x ) % tape 1 % Si |E| < q Alors trier E, mettre dans x llment de rang l et exit . Sinon Subdiviser E en |E| / q sous-squences de q lments ; % tape 2 % Trier chaque sous-squence et dterminer pour chacune llment mdian, de rang q / 2 ; % tape 3 % Soit M lensemble de ces |E| / q mdians ;
Seq _ Select(M, M / 2,m ) ;

% 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 ) .

Mise en place dun algorithme parallle


Si n est la taille du problme, on suppose que le nombre de processeurs est plus petit que n et est une fonction sous-linaire de n. On choisit ce nombre de manire adaptative.

p(n)=n1 x avec 0<x<1


On se place dans un modle SIMD-SM-EREW. On aura besoin de deux procdures lmentaires. Broadcasting dune donne On a N processeurs et une donne D qui doit tre transmise sur la SM tous les autres. On dispose dun tableau A de travail N / 2 cases et chaque processeurs sa propre zone mmoire.
Procdure Broadcast(D, N, A) % tape 1 excute par P1 % { Lire D et le stocker en local ; crire dans A[1] } % tape 2 % Pour i de 0 log 2(N )1 Faire Pour j de 2i +1 2i +1 Faire en parallle { % excut par Pj % Lire la valeur dans A[j-2i] et la stocker en local ; Si i log 2(N )1 Alors lcrire dans A[j] ; } Fin Pour Fin Pour Fin Procdure

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

On a une complexit globale en O(log2(N )) sur N processeurs. -6-

Esnard Aurlien

Algorithmique parallle 1

ENSEIRB

Procdure All _ Sums a1 ,L,aN

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 ; }

Fin Pour Fin Pour Fin Procdure

Cette algorithme est valable pour nimporte quelle opration binaire associative.

Un algorithme parallle pour la slection


Hypothses : Soit S un ensemble de n lments. On dispose de N processeurs. Chaque processeur connat n et N et calcule x tel que N =n1 x . Chaque processeur est capable de
stocker localement une squence N =n x lments. M est un tableau de longueur M en SM.
Procdure Parallel _ Select(S,k, z ) % tape 1 % Si S 4 Alors P1 excute Seq _ Select(S,k, z ) et Exit ; Sinon { S est subdivis en S
x

S chacune ; chaque squence S est affecte P ; }


i i

sous-squences S de longueur
1 x
i

% tape 2 : recherche de llment mdian Si % Pour i de 1 S

Faire en parallle
1 x

% excut par Pi %

Seq _ Select Si , Si /2 ,mi ;

( )

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]

Chaque processeur calcule son lment mdian et le met dans le tableau M.


M = [14 | 9 | 7 | 25 | 32]

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.

S = [16 20 31 22 33 | 24 26 18 34 36 | 25 27 32 35 33] Chaque processeur calcule son mdian.


M = [22 | 26 | 32]

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.

Etude dun rseau de processeurs ddis la fusion


()

Algorithme parallle de fusion


On se place dans le modle SIMD-SM-CREW. Procdures squentielles Lalgorithme parallle utilise les deux procdures squentielles suivantes.
Fusion

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 -

Esnard Aurlien Exemple

Algorithmique parallle 1

ENSEIRB

Un algorithme de fusion en EREW

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 -

Вам также может понравиться