8inf856 algorithmes parallèles. le langage parallèle cilk trois nouveaux mots clés: 1.spawn...

14
8INF856 Algorithmes parallèles

Upload: aimeri-salmon

Post on 04-Apr-2015

109 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

8INF856

Algorithmes parallèles

Page 2: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Le langage parallèle Cilk

Trois nouveaux mots clés:1. spawn2. sync3. Parallel

Si on enlève ces mots clés, on obtient un programme C standard.

Page 3: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Exemple: Fibonacci

P-Fib(n) if n<=1 return n else x = spawn P-Fib(n-1) y = P-Fib(n-2) sync return x+y

Page 4: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Exemple: Fibonacci

Page 5: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Mesures de performance

• Travail (work): temps séquentiel• Durée (span): temps parallèle• TP: temps d’exécution sur p processeurs

• T1: travail

• T∞:durée

Page 6: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Mesures de performance

• Loi du travail: TP ≥ T1/P

• Loi de la durée: TP ≥ T∞

• Accélération: T1/Tp ≤ P

• Parallélisme: T1/T∞ ≥ T1/Tp

Page 7: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Analyse de P-Fib

T1(n) = θ(ϕn) où ϕ est le nombre d’or

T∞(n) = max(T∞(n-1), T∞(n-2)) + θ(1)

= T∞(n-1) + θ(1)

= θ(n)

Parallélisme: θ(ϕn/n)

Page 8: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Boucles parallèles

Exemple: On veut multiplier une matrice M par un vecteur x

Mat-Vec(M,x,n) parallèle for i=1 to n do y[i]=0 parallèle for i=1 to n do for j=1 to n do y[i] = y[i] + M[i,j]*x[j] return y

Page 9: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Implémentation des boucles parallèles

On implémente les boucles parallèles à l’aide de l’instruction spawn:

Mat-Vec-Main-Loop(M,x,y,n,d,f) if (d==f) for j=1 to n do y[d] = y[d] + M[d,j]*x[j] else m = (d+f)/2 spawn Mat-Vec-Main-Loop(M,x,y,n,d,m) Mat-Vec-Main-Loop(M,x,y,n,m+1,f) sync

Page 10: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Implémentation des boucles parallèles

Page 11: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Analyse de Mat-Vec(A,x,n)

• Travail: θ(n2)• Durée:

Total: θ(n)• Parallélisme: θ(n2/n) = θ(n)

Θ(lg n)

Θ(lg n) + θ(n)

Θ(1)

Mat-Vec(M,x,n) parallèle for i=1 to n do y[i]=0 parallèle for i=1 to n do for j=1 to n do y[i] = y[i] + M[i,j]*x[j] return y

Page 12: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Multiplication matricielle (1)

P-Square-Matrix-Multiply(A,B,n) parallèle for i=1 to n do parallèle for j=1 to n do C[i,j]=0 for k=1 to n do C[i,j] = C[i,j] + A[i,k]*B[k,j] return C

Page 13: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Multiplication matricielle (2)

Page 14: 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un

Algorithme de Strassen