Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de...
-
Upload
rocio-baeza -
Category
Documents
-
view
122 -
download
1
Transcript of Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de...
![Page 1: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/1.jpg)
Arquitecturas Paralelas IF - EHU
Arquitecturas Paralelas
8. Paralelización de bucles. Reparto de tareas.
- Introducción- Paralelización de bucles- Mecanismos de sincronización- Optimizaciones principales- Reparto de las iteraciones- Secciones paralelas
![Page 2: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/2.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 28
Identificar qué tareas pueden ejecutarse en paralelo y cuáles no (análisis de dependencias).Sincronizar los procesos.Repartir los procesos a los procesadores.
Objetivo: ejecutar los programas P veces más rápido; caso particular: bucles.
Hacerlo de manera eficiente.
Introducción
![Page 3: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/3.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 38
Tipos de paralelismo (1)
(a) Paralelismo de datos
do i = 1, 1000 do i = 1001, 2000 do i = 2001, 3000A(i) = func(i) A(i) = func(i) A(i) = func(i)
enddo enddo enddo
P0 P1 P2
do i = 1, 3000A(i) = func(i)
enddo
Introducción
![Page 4: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/4.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 48
Tipos de paralelismo (1)
(b) Paralelismo de función
Introducción
P0 P1
F1
F2
F3
F4
![Page 5: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/5.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 58
Tipos de paralelismo (2)
▪ grano fino (fine grain) tareas “pequeñas” / mucha comunicación
▪ grano medio
▪ grano grueso (coarse grain)
tareas “grandes” / poca comunicación
▪ grado de paralelismo
Introducción
![Page 6: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/6.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 68
¿Dependencias entre tareas?
Sincronización
- global (barreras)- punto a punto (eventos)
Introducción
P0 P1
F1
F2
F3
F4
![Page 7: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/7.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 78
Dos modelos
▪ Maestro-esclavo
Un thread master genera P threads para ser ejecutados en paralelo, que “mueren” al terminar su tarea.
▪ SPMD (Single-Program-Multiple-Data)
Se ejecutan P copias iguales independientes. Las tareas se diferencian mediante el pid del proceso.
Introducción
![Page 8: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/8.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 88
Paralelización de bucles
grano fino / medioreparto de iteraciones del bucleanálisis de dependencias
Hacerlo de manera eficiente. ¿El programador o el compilador?
Introducción
![Page 9: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/9.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 98
Salvo casos muy obvios, la paralelización del código (análisis de dependencias, reparto de tareas, etc.) sigue siendo responsabilidad del programador.
Por ello, vamos a ver algunas de las opciones más habituales a la hora de paralelizar bucles de manera eficiente.
Introducción
![Page 10: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/10.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 108
Se necesita que una fracción importante del código pueda ejecutarse en paralelo. ¡No olvides la ley de Amdahl!
Paralelizar (como vectorizar) código implica cambiar el orden original de las instrucciones del bucle. Por tanto, tenemos que analizar las dependencias entre las instrucciones del bucle.
Introducción
![Page 11: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/11.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 118
Ejemplo:
do i = 0, N-1
A(i) = A(i) + 1
enddo
P0: L0 +0 S0P1: L1 +1 S1P2: L2 +2 S2… ...
En paralelo
Introducción
L0 +0 S0 L1 +1 S1 L2 +2 S2 ...
![Page 12: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/12.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 128Introducción: depend.
dependencia
RAW
i: A =...
j: = A
antidependencia
WAR
i: = A...
j: A =
dependen. de salida
WAW
i: A =...
j: A =
i j i j i j
dependencias verdaderas dependencias de nombre
![Page 13: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/13.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 138
Bucles
+ Grafo de dependencias+ Distancia de la dependencia
do i = 2, N-21 A(i) = B(i) + 22 C(i) = A(i-2) + A(i+1)
enddo
A(2) = B(2) + 2C(2) = A(0) + A(3)
A(3) = B(3) + 2C(3) = A(1) + A(4)
A(4) = B(4) + 2C(4) = A(2) + A(5)
A(5) = B(5) + 2C(5) = A(3) + A(6)
1
2
A, 2
A, 1
Introducción: depend.
![Page 14: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/14.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 148
do i = 2, N-311 A(i) = B(i) + 22 C(i) = A(i-2)3 D(i+1) = C(i) + C(i+1)4 B(i+1) = B(i) + 15 D(i+30) = A(i)enddo
1
2
3
4
5
A, 0
A, 2
C, 0 C, 1
D, 29
B, 1
B, 1
Introducción: grafos de dep.
![Page 15: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/15.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 158
+ Espacio de iteraciones
do i = 2, N-1 do j = 1, N-2 1 A(i,j) = A(i,j-1) * 2 2 C(i,j) = A(i-2,j+1) + 1 enddoenddo
1
2
A 2,-1
A 0,1
i
j
Introducción: grafos de dep.
![Page 16: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/16.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 168
Test de dependencias: únicamente para funciones lineales del índice del bucle.
do i = L1, L2 X(a*i+b) = = X(c*i+d)enddo
?
L1 L2
i
a*i+b
c*i+d
i1 i2
Introducción: test de dep.
d - bMCD(c,a)
Z → no hay depend.
![Page 17: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/17.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 178
Paralelizar el código significa repartir tareas (iteraciones de un bucle) a procesadores. Pero hay que respetar las dependencias de datos.
El problema principal son las dependencias de distancia > 0, y sobre todo aquellas que forman ciclos en el grafo de dependencias.
Paralelización de bucles
![Page 18: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/18.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 188
Siempre es posible ejecutar un bucle en P procesadores, añadiendo sincronización para asegurar que se respetan las dependencias de datos…
… lo que no significa que siempre sea sensato hacerlo, pues hay que tener en cuenta el coste global: cálculo + sincronización (comunicación).
Paralelización de bucles
![Page 19: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/19.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 198
Objetivos:
Repartir las iteraciones de un bucle entre los procesadores, para que se ejecuten “a la par”.
Siempre que se pueda, que se ejecuten de manera independiente, sin necesidad de sincronizar (dependencias de distancia 0).
En función de las características del sistema (comunicación, reparto de tareas…) intentar que las tareas tengan un cierto tamaño.
Paralelización de bucles
![Page 20: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/20.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 208
Tal vez sólo se pueda utilizar un número limitado de procesadores.
Atención al rendimiento (p. e., problemas en la cache).
Paralelización de bucles
![Page 21: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/21.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 218
> Ejemplos
Paralelización de bucles
P0 P1 P2 P3do i = 0, N-1A(i) = A(i) + 1B(i) = A(i) * 2
enddo
![Page 22: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/22.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 228Paralelización de bucles
> Ejemplos
P0 P1 P2 P3
?
do i = 0, N-2A(i) = B(i) + 1B(i+1) = A(i) * 2
enddo
![Page 23: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/23.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 238Paralelización de bucles
> Ejemplos
P0 P0P1 P1do i = 0, N-3A(i+2) = A(i) + 1
enddo
![Page 24: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/24.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 248Paralelización de bucles
> Ejemplos
do i = 0, N-1
do j = 1, M-1
A(i,j) = A(i,j-1) + 1
enddo
enddo
P0 P1 P2 P3
![Page 25: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/25.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 258Paralelización de bucles
> Ejemplos
P0
P1
P2
P3
do i = 0, N-1
do j = 1, M-1
A(i,j) = A(i,j-1) + 1
enddo
enddo
![Page 26: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/26.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 268
Si todas las dependencias son de distancia 0 (las iteraciones son independientes), éstas se pueden repartir como se quiera entre los procesadores, sin tener que sincronizarlas: doall.
Si hay dependencias entre iteraciones, pero todas van hacia adelante, se pueden sincronizar mediante barreras: forall (o doall + barrier).
Si las dependencias forman ciclos, hay que utilizar sincronización punto a punto: doacross.
Paralelización de bucles
![Page 27: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/27.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 278
Las iteraciones son independientes, por lo que el reparto puede hacerse como se quiera: doall.
Bucles doall
do i = 0, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)D(i) = C(i) / A(i)
enddo
doall i = 0, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)D(i) = C(i) / A(i)
enddoall
1
2
3
C, 0
A, 0
i=0 1 2 3
![Page 28: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/28.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 288
Hay dependencias entre iteraciones, pero todas van “hacia adelante”: forall.
Cada dependencia puede sincronizarse con una barrera: los procesos esperan a que todos hayan ejecutado una determinada instrucción antes de pasar a ejecutar la siguiente.
Hay más sincronización que la estrictamente necesaria, pero es sencillo de implementar.
Bucles forall
![Page 29: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/29.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 298Bucles forall
do i = 1, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)D(i) = C(i-1) / A(i)
enddo
forall i = 1, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)BARRERA (...)D(i) = C(i-1) / A(i)
endforall
i=1 2 3 4
barrera
1
2
3
C, 0
A, 0
C, 1
![Page 30: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/30.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 308Bucles forall
do i = 1, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)D(i) = C(i-1) / A(i)
enddo
i=1 2 3 4
barrera
doall i = 1, N-1C(i) = C(i) * C(i)A(i) = C(i) + B(i)
enddoall[ BARERRA (...) ]doall i = 1, N-1D(i) = C(i-1) / A(i)
enddoall
1
2
3
C, 0
A, 0
C, 1
![Page 31: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/31.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 318
Las dependencias forman ciclos: doacross, sincro-nización punto a punto (productor / consumidor).
Sincronización de las dependencias mediante vectores de eventos:
post(vA,i) → vA(i) := 1
wait(vA,i) → esperar a que vA(i) = 1
Si vA(i) = 0, aún no se ha ejecutado la iteración i de la instrucción que se está sincronizando.
Bucles doacross
![Page 32: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/32.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 328
do i = 2, N-2A(i) = B(i-2) + 1B(i+1) = A(i-2) * 2
enddo
1
2
A,2B,3 1 1 1 . . .
2 2 2 . . .
1 1 1
2 2 2
i=2 3 4 5 6 7
doacross i = 2, N-2
wait (vB,i-3)A(i) = B(i-2) + 1post (vA,i)
wait (vA,i-2)B(i+1) = A(i-2) * 2post (vB,i)
enddoacross
Bucles doacross
![Page 33: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/33.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 338
do i = 2, N-2A(i) = B(i-2) + 1B(i+1) = A(i-2) * 2
enddo
doacross i = 2, N-2
wait (vB,i-3)A(i) = B(i-2) + 1post (vA,i)
wait (vA,i-2)B(i+1) = A(i-2) * 2post (vB,i)
enddoacross
1
2
A,2B,3
, 3
Bucles doacross
12 13 14
22 23 24
15 16 17
25 26 27
...
P0 P1 P2
![Page 34: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/34.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 348
No siempre hay que ejecutar en paralelo
do i = 0, N-2A(i) = B(i) + C(i)B(i+1) = A(i) / 2
enddo
doacross i = 0, N-2wait (vB,i-1)A(i) = B(i) + C(i)B(i+1) = A(i) / 2post (vB,i)
enddoacross
1
2
A,0B,1
12p w 1 2 p w 1 …
??
Bucles doacross
![Page 35: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/35.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 358
Vectores de eventos en dos dimensiones
Bucles doacross
P0
P1
P2
P3
do i = 0, N-2 do j = 0, N-2 A(i+1,j+1) = A(i+1,j) + 1 B(i,j) = A(i,j)
enddoenddo
doacross i = 0, N-2 do j = 0, N-2
A(i+1,j+1) = A(i+1,j) + 1
post (vA,i,j)
wait (vA,i-1,j-1)
B(i,j) = A(i,j)
enddo
enddoacross
![Page 36: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/36.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 368
Antidependencias / Dependencias de salida
Si son entre procesos, hay que sincronizarlas.
do i = 0, N-3A(i) = B(i+2) / A(i)B(i) = B(i) + C(i)
enddo doacross i = 0, N-3A(i) = B(i+2) / A(i)post (vB,i)wait (vB,i-2)B(i) = B(i) + C(i)
enddoacross
1
2
B,2
LD B(i+2)post...wait ST B(i)
Otras dependencias
![Page 37: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/37.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 378
Instrucciones de tipo if
do i = 1, N-1if (B(i) > 0) then
A(i) = A(i) + B(i) C(i) = A(i-1) / 2 endifenddo
doacross i = 1, N-1
if (B(i) > 0) then A(i) = A(i) + B(i) post (vA,i) wait (vA,i-1) C(i) = A(i-1) / 2
endif
enddoacross
else post (vA,i)
endif1
2
A,1
0
Instrucciones if
![Page 38: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/38.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 388
Cómo sincronizar las instrucciones
• mediante vectores de eventos (post/wait)
- inicialización- tamaño (memoria)- ojo con la falsa compartición
• mediante contadores
Mecanismos de sincron.
![Page 39: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/39.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 398
Contadores de sincronización (uno por cada depen-dencia)
- las instrucciones van “acabando” en orden estricto, e incrementan el contador.
- cA = j han terminado todas las iteraciones hasta la j, y no la j+1.
i = 0 1 2 3 4 5 6 7 8 9...
vA(i) = 1 1 1 0 1 0 1 1 0 0...cA = 2
Contadores de sincron.
![Page 40: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/40.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 408
Para sincronizar una dependencia mediante un contador:
- tras ejecutar la iteración i, esperar a que el valor del contador sea i-1 (es decir, a que se haya ejecutado esa instrucción hasta la iteración i-1).
wait (cA,i-1) → esperar a que cA = i-1
- incrementar el contador, para indicar que también se ha ejecutado la iteración i.
post (cA,i) → cA := cA + 1 (cA := i)
Contadores de sincron.
![Page 41: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/41.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 418
doacross i = 3, N-1
wait (vD,i-3)
C(i) = C(i) * D(i-3)
post (vC,i)
A(i) = C(i) + B(i)
wait (vC,i-1)
D(i) = C(i-1) / A(i)
post (vD,i)
enddoacross
do i = 3, N-1C(i) = C(i) * D(i-3)A(i) = C(i) + B(i)D(i) = C(i-1) / A(i)
enddo
1
2
3
C, 0
A, 0 C,1
D,3 1 1 12 2 23 3 3
1 1 1 2 2 2 3 3 3
doacross i = 3, N-1wait (cD,i-3)C(i) = C(i) * D(i-
3)wait (cC,i-1)post (cC,i)
A(i) = C(i) + B(i)D(i) = C(i-1) /
A(i)wait (cD,i-1)
post (cD,i)enddoacross
Contadores de sincron.
![Page 42: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/42.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 428
doacross i = 3, N-1C(i) = C(i) * D(i-3)wait (cC,i-1)post (cC,i)
A(i) = C(i) + B(i)D(i) = C(i-1) / A(i)
enddoacross
Minimizar la sincronización
P0
P0
1
2
3
C, 0
A, 0 C,1
D,3
do i = 3, N-1C(i) = C(i) * D(i-3)A(i) = C(i) + B(i)D(i) = C(i-1) / A(i)
enddo
Contadores de sincron.
1 1 12 2 23 3 3
1 1 1 2 2 2 3 3 3
![Page 43: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/43.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 438
forall i = ...[ 1 ]barrera(...)
[ 2 ] [ 3 ]
barrera(...)
[ 4 ]endforall
doacross i = ...[ 1 ]post (vA,i)
wait (vA,i-1)[ 2 ] post (vC,i)
[ 3 ]
wait (vC,i-2)[ 4 ]
enddoacross
doacross i = ...[ 1 ]wait (cA,i-1)post (cA,i)
[ 2 ] wait (cC,i-1)
post (cC,i)
[ 3 ][ 4 ]
enddoacross
1
2
3
A, 1
C, 2
B,0
A,0
4
Ejemplo
![Page 44: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/44.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 448
0. Deshacer la definición de constantes y las variables de inducción.
1. Eliminar todas las dependencias que no son intrínsecas al bucle. Por ejemplo:
do i = 0, N-1X = A(i) * B(i) C(i) = SQRT(X)D(i) = X - 1
enddo
doall i = 0, N-1X(i) = A(i) * B(i)C(i) = SQRT(X(i))
D(i) = X(i) - 1enddoall
convertir X en una variable privada
Principales optimizaciones
![Page 45: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/45.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 458
2. Fisión del bucle. Si una parte del bucle hay que ejecutarla en serie, romper el bucle convenientemente y ejecutar lo que sea posible en paralelo.
do i = 1, N-1A(i) = A(i-1) / 2D(i) = D(i) + 1
enddo
do i = 1, N-1A(i) = A(i-1) / 2
enddo
doall i = 1, N-1D(i) = D(i) + 1
enddoall
Principales optimizaciones
![Page 46: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/46.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 468
3. Ordenar las dependencias (hacia adelante).
do i = 1, N-1A(i) = D(i-1) / 2D(i) = C(i) + 1
enddo
forall i = 1, N-1D(i) = C(i) + 1BARRERA (...)
A(i) = D(i-1) / 2endforall
1
2
D, 1 2………….12………1 2…….1
1…2.. 1…2.. 1…2..
??
Principales optimizaciones
![Page 47: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/47.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 478
4. Alinear las dependencias: peeling.
do i = 1, N-1A(i) = B(i)C(i) = A(i-1) + 2
enddo
1
2
A, 1
doall i = 1, N-2A(i) = B(i)C(i+1) = A(i) + 2
enddoall
C(1) = A(0) + 2
A(N-1) = B(N-1)
Principales optimizaciones
![Page 48: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/48.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 488
do i = 2, N-1A(i) = B(i)C(i) = A(i-1) + A(i-2)
enddo
1
2
A, 2 A, 1
C(2) = A(1) + A(0)C(3) = B(2) + A(1)
doall i = 2, N-3A(i) = B(i)X(i+1) = B(i+1)C(i+2) = X(i+1) + A(i)
enddoall
A(N-2) = B(N-2)A(N-1) = B(N-1)
do i = 2, N-1A(i) = B(i)X(i) = B(i)C(i) = X(i-1) + A(i-2)
enddo
Principales optimizaciones
1’
2
A, 2 X, 1
1
![Page 49: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/49.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 498
5. Generar hilos independientes
do i = 0, N-3A(i+1) = B(i) + 1B(i+2) = A(i) * 3C(i) = B(i+2) - 2
enddo
B(2) = A(0) * 3C(0) = B(2) - 2
doall k = 0, 2 do i = pid, N-4, 3 A(i+1) = B(i) + 1 B(i+3) = A(i+1) * 3 C(i+1) = B(i+3) – 2 enddoenddoall
A(N-2) = B(N-3) + 1
1
2
3
B,0
B,2 A,1 1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
Principales optimizaciones
![Page 50: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/50.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 508
6. Minimizar la sincronización
do i = 2, N-1B(i) = B(i) + 1
C(i) = C(i) / 3A(i) = B(i) + C(i-1)D(i) = A(i-1) * C(i-2)E(i) = D(i) + B(i-1)
enddo
1
2
3
B,0
B,1
A,1
4
5
C,
1C,2
D,0
doacross i = 2, N-1B(i) = B(i) + 1
C(i) = C(i) / 3post (vC,i)
wait (vC,i-1)A(i) = B(i) + C(i-1)post (vA,i)
wait (vA,i-1)D(i) = A(i-1) * C(i-2)E(i) = D(i) + B(i-1)
enddoacross
1 2 3 4 51 2 3 4 51 2 3 4 5
i=2
3
4...
Principales optimizaciones
![Page 51: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/51.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 518
7. Tratamiento de bucles: intercambio.
Principales optimizaciones
do i do_par j
do_par i do j
do j do_par i
do_par j do i
![Page 52: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/52.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 528
Ejemplo:
do i = 1, N-1 do j = 0, N-1
A(i,j) = A(i-1,j) + 1
enddoenddo
do i = 1, N-1
doall j = 0, N-1A(i,j) = A(i-1,j) +
1enddoall
enddo
Principales optimizaciones
j=0 1 2 3
i=1
2
3
4
![Page 53: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/53.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 538
Ejemplo:
doall j = 0, N-1
do i = 1, N-1A(i,j) = A(i-1,j) + 1
enddo
enddoall
do i = 1, N-1 do j = 0, N-1
A(i,j) = A(i-1,j) + 1
enddoenddo
Principales optimizaciones
j=0 1 2 3
i=1
2
3
4
![Page 54: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/54.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 548
8. Tratamiento de bucles: cambio de sentido.
j=0 1 2
i=1
2
3
4
do i = 1, 100 do j = 0, 2 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3
enddoenddo
do j = 2, 0, -1
doall i = 1, 100 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3
enddoall
enddo
Principales optimizaciones
![Page 55: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/55.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 558
do j = 1, 2N-1 doall i = max(1,j-N+1), min(j,N) A(i,j-(i-1)) = A(i-1,j-(i-1)) + A(i,j-1-(i-1)) enddoallenddo
9. Skew
do i = 1, N do j = 1, N A(i,j) = A(i-1,j) + A(i,j-1) enddoenddo
Principales optimizaciones
![Page 56: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/56.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 568
10. Otras optimizaciones típicas
Aumento del tamaño de grano y reducción del overhead de la paralelización.
- Juntar dos bucles en uno (¡manteniendo la semántica!): fusión.- Convertir un bucle de dos dimensiones en otro de una sola dimensión: colapso o coalescencia.…
Principales optimizaciones
![Page 57: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/57.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 578
¿Cómo se reparten las iteraciones de un bucle entre los procesadores?Si hay tantos procesadores como iteraciones, tal vez una por procesador.
Pero si hay menos (lo normal), hay que repartir. El reparto puede ser:
estático: en tiempo de compilación.dinámico: en ejecución.
Reparto de iteraciones
![Page 58: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/58.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 588
El objetivo: intentar que el tiempo de ejecución de los trozos que se reparten a cada procesador sea similar, para evitar tiempos muertos (load balancing).
En todo caso, OJO con las dependencias (sincronización), el tamaño de grano, la localidad de los accesos y el coste del propio reparto.
Reparto de iteraciones
![Page 59: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/59.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 598
Planificación estática
Qué ejecuta cada procesador se decide en tiempo de compilación. Es por tanto una decisión prefijada.
Cada proceso tiene una variable local que lo identifica, pid [0..P-1].
Dos opciones básicas: reparto consecutivo y reparto entrelazado.
Reparto de iteraciones
![Page 60: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/60.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 608
- No añade carga a la ejecución de los threads.
- Pero no asegura el equilibrio de la carga entre los
procesos.
- Permite cierto control sobre la localidad de los accesos a
cache.
▪ Consecutivo
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
▪ Entrelazado
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
principio = pid * N/Pfin = (pid+1) * N/P – 1
do i = principio, fin...
enddo
do i = pid, N, P...
enddo
Reparto de iteraciones
![Page 61: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/61.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 618
Equilibrio en el reparto de carga
1-20
21-40
41-60
61-80
estático (fijo)
Tej
asignación dinámica de
una nueva tarea
1-10
21-30
11-20
31-40
Tej
do i = 1, 80if (A(i) > 0) calcular()
enddo
Reparto de iteraciones
![Page 62: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/62.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 628
Planificación dinámica
Para intentar mantener la carga equilibrada, las tareas se van escogiendo en tiempo de ejecución de un cola de tareas. Cuando un proceso acaba con una tarea (un trozo del bucle) se asigna un nuevo trozo.
Dos opciones básicas: los trozos que se van repartiendo son de tamaño constante o son cada vez más pequeños.
Reparto de iteraciones
![Page 63: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/63.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 638
Las iteraciones se reparten una a una, o por trozos de tamaño Z.
Self / Chunk scheduling
Añade carga a la ejecución de los threads. Hay que comparar ejecución y reparto.
LOCK (C); mia = i; i = i + Z; Z = 1 selfUNLOCK (C);
while (mia <= N-1)
endwhile
do j = mia, min(mia+Z-1, N-1) ...enddoLOCK (C) mia = i; i = i + Z;UNLOCK (C)
Reparto de iteraciones
![Page 64: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/64.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 648
Los trozos de bucle que se reparten son cada vez más pequeños según nos acercamos al final.
Guided / Trapezoidal
▪ Guided : parte proporcional de lo que queda por ejecutar:
Zs = (N – i) / P (entero superior)
que equivale a:
Zi = Zi-1 (1 - 1/P)
Reparto de iteraciones
![Page 65: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/65.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 658
▪ Trapezoidal: reduciendo el trozo anterior en una constante: Zi = Zi-1 - k
op. de planificación
Z1
Zn
1 n2 i
k
Z2
)(21
22 1
22111
1
1
n
nnnn
s
ns ZZN
ZZkN
k
ZZZZn
ZZZ
Reparto de iteraciones
![Page 66: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/66.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 668
En general, el reparto dinámico busca un mejor equilibrio en el reparto de carga, pero:
- hay que considerar la carga que se añade (overhead), en relación al coste de las tareas que se asignan.
- hay que considerar la localidad en los accesos a los datos y los posibles
problemas de falsa compartición.
Reparto de iteraciones
![Page 67: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/67.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 678
Ejemplo de reparto (1.000 iteraciones, 4 procesadores):
▪ chunk (Z = 100)
100 100 100 100 100 100 100 100 100 100 (10)
▪ guided quedan: 1000 750 562 421 … 17 12 9 6 4 3 2 1
se reparten: 250 188 141 106 … 5 3 3 2 1 1 1 1 (22)
▪ trapezoidal (Z1 = 76, Zn = 4 >> k = 3)
76 73 70 67 … 16 13 10 7 4 (25)
Reparto de iteraciones
![Page 68: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/68.jpg)
Arquitecturas ParalelasIF - EHU
P. Bucl. 688
Paralelismo a nivel de procedimiento o función:
F2
F3
F1
F4
F5
- modelo Fork / Join - Parallel sections
ForkF1F2
Join
ForkF3F4
JoinF5
doall k = 0, 1if (pid = 0) then F1if (pid = 1) then F2
endoall[barrera]
doall k = 0, 1if (pid = 0) then F3if (pid = 1) then F4
endoallF5
Secciones paralelas
![Page 69: Arquitecturas Paralelas IF - EHU Arquitecturas Paralelas 8. Paralelización de bucles. Reparto de tareas. - Introducción - Paralelización de bucles - Mecanismos.](https://reader036.fdocuments.mx/reader036/viewer/2022081502/5528bde8497959977d8fd968/html5/thumbnails/69.jpg)
último tema… ¡el año que viene!
Arquitecturas ParalelasIF - EHU
P. Bucl. | Secciones paralelas
Paralelismo a nivel de procedimiento o función:- Modelo Fork / Join- Parallel sections
F2
F3
F1
F4
F5
ForkF1F2
Join
ForkF3F4
JoinF5
doall k = 0, 1if (pid=0) then F1if (pid=1) then F2
endoall[hesia]doall k = 0, 1
if (pid=0) then F3if (pid=1) then F4
endoallF5