8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn...
-
Upload
aimeri-salmon -
Category
Documents
-
view
116 -
download
4
Transcript of 8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn...
![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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/1.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062417/551d9db8497959293b8dc8a3/html5/thumbnails/14.jpg)
Algorithme de Strassen