Top Banner
8INF856 Algorithmes parallèles
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.

Apr 04, 2015

Download

Documents

Aimeri Salmon
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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