Procesamiento Paralelo Curso 17/18 5 3 2, 3, 3 2+, 2 4 Computadores Paralelos Programación basada en paso de mensajes Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás, Pipeline, Síncrona, Equilibrado de carga y Terminación Programación basada en memoria común Algoritmos y aplicaciones Ordenación, …
proPar Temario equilibrado-2 Equilibrado de carga y Terminación Equilibrado de carga (estática vs dinámica) Dinámico y centralizado Dinámico y distribuído Aplicado a arquitectura “pipeline” Terminación distribuída (condición) Mensajes de ACK Modo anillo Modo árbol Ejemplo “Camino más corto”
proPar Equilibrado de carga equilibrado-3 evitar P0 P1 P2 P3 P4 P5 ideal ¿Cómo se consigue? ¿A qué se debe? División imperfecta del trabajo Equilibrado estático Equilibrado dinámico P4 más rápido y P1 más lento
proPar Equilibrado estático equilibrado-4 Decisión “a priori” sin tener en cuenta ejecución real de los Pi Ejemplo 1 OK: cuentaPar1 mpirun –np N cuentaPar1 1680000 PC9 A B C D M0 E1 E2 E3 Ti 31:802 14:679 10:548 7:913 6:322 5:275 4:321 3:784 Ei 1,08 1,00 1,01 1,05 Nodos 1 2 3 4 5 6 7 8
proPar Equilibrado estático equilibrado-5 Ejemplo 2 MAL: mandelpar “trozos” Ti 30:125 17:552 20:612 17:158 12:600 12:534 11:342 9:214 Ei 0,88 0,49 0,44 0,48 0,40 0,38 0,41 Nodos 1 2 3 4 5 6 7 8 mpirun –np N mandelparTrozos PC9 Difícil estimar tiempos de ejecución de las partes sin ejecutarlas
proPar Equilibrado estático equilibrado-6 Ejemplo 3 MAL: primopar3 ¿ Viable un reparto estático mejor ? primosec [3..5449]720 …. 5457, 5455, 5453, 5451 …. , 5477, 5471 Ti 16:724 8:452 4:278 4:283 2:123 2:216 2:214 1:170 Ei 0,99 0,98 0,65 0,75 0,63 0,89 Nodos 1 2 4 6 8 10 12 16 mpirun –np N primopar3 720 PC1..PC4 primopar3 [3..5449]720 …. 5475, 5467, 5459, 5451 …. 5477, 5469, 5461, 5453 …. 5479, 5471, 5463, 5455 …. 5481, 5473, 5465, 5457
proPar Equilibrado estático equilibrado-7 Ejemplo 4 MAL: mandelpar “filas fijas” Round Robin Ti 58:030 28:883 14:453 9:766 16:050 12:701 10:669 9:223 Ei 1,00 0,99 0,45 0,46 Nodos 1 2 4 6 8 10 12 14 mpirun –np N mandelparFilas PC1..PC8 duales heterogéneos 8:908 0,43 15 Se usan PCs lentos E1 filas 0, 4, 8, 12, … E2 filas 1, 5, 9, 13, … E3 filas 2, 6, 10, 14, … E4 filas 3, 7, 11, 15, …
proPar Equilibrado estático equilibrado-8
proPar Equilibrado estático equilibrado-9 Ejemplo 5 MAL: primopar2 Ojo con redes directas Epiphany 16 ? 28:035 47:680 Mapeo, planificación, scheduling
proPar Equilibrado dinámico centralizado equilibrado-10 Idea: Maestro con tareas pendientes que reparte (en vivo) a los esclavos Ejemplo 6 OK: mandelpar “reparto dinámico de filas” PC1..PC8 duales heterogéneos Ti 58:030 28:883 14:453 9:766 16:050 12:701 10:669 9:223 Ei 1,00 0,99 0,45 0,46 Nodos 1 2 4 6 8 10 12 14 8:908 0,43 15 estático 1 2 3 Ti 29:086 14:670 9:892 7:978 7:090 6:439 5:876 Ei 1,00 0,99 0,98 0,91 0,82 0,75 0,71 5:617 0,69 dinámico maestro e1 e2 e3 e4 4 Se usan PCs lentos
proPar Equilibrado dinámico centralizado equilibrado-11 Idea: Maestro con tareas pendientes que reparte (en vivo) a los esclavos Ejemplo 7 MAL: caballoSec 3 3 Ti 602:355 304:164 216:458 160:797 157:207 131:073 105:461 88:776 Ei 0,99 0,93 0,94 0,77 0,82 0,85 Nodos 1 2 3 4 5 6 7 8 mpirun –np N caballoPar 3 3 PC1 ¿Código paralelo? 1..8 cores
proPar Equilibrado dinámico centralizado equilibrado-12 Idea: Maestro con tareas pendientes que reparte (en vivo) a los esclavos cola de tareas Pmaestro Pesclavo Granja de Procesadores: Fractal for (fila=0; fila<FILAS; f++) enviar(proceso[fila%N], fila); mandelpar ¿igual que estático? Dame tarea Toma tarea Tareas no homogéneas: Servir antes las grandes Creación dinámica de esclavos Creación dinámica de tareas DETALLES ¿Cuándo terminar?
proPar Equilibrado dinámico centralizado equilibrado-13 ¿Cuándo terminar? cola de tareas Pmaestro Pesclavo No basta {tareas} = ¿Un esclavo detecta fin global? M e0 e1 ei en ¿Cada esclavo detecta su fin local? Cuello de botella en el maestro Sencillo y eficiente si: pocos esclavos y cálculo intensivo
proPar Equilibrado dinámico distribuido equilibrado-14 Idea: Distribuir la cola de tareas entre más procesos ? Jerarquía de maestros Pmaestro cola de tareas Pesclavo PsubM0 PsubMn
proPar Equilibrado dinámico distribuido equilibrado-15 Totalmente descentralizado Iniciada por receptor “relajado” Iniciada por emisor “axfisiado” Pi Pj Pk Pm Ri solicita a ¿Ej? si: {tareas} = o pocas Transferencia de tareas Sistema muy cargado Sistema poco cargado Ej envía a ¿Ri? si: {tareas} = demasiadas ¿De quién recibo? ¿A quién envío?
proPar Equilibrado dinámico distribuido equilibrado-16 ¿De quién recibo? ¿A quién envío? Totalmente descentralizado Redes Directas (Pi recibe de ¿?) 75% Pi ¿Mejores candidatos los vecinos? ¿Cuándo y cuánto doy? Solución más generalista Pi RoundRobin Aleatorio ....... Algoritmo local elige Pj
proPar Aplicado a arquitectura “pipeline” equilibrado-17 Maestro Esclavo 1 2 N tareas resultados env(ET1, &T); rec(ER1, &R); recibir(Eizq, &Tarea); if estoyLibre Resultado = computar(Tarea); enviar (Eizq, &Resultado); else enviar (Eder, &Tarea); ¿Alternativa? genera dibuja T R ET C ER T L R T : Tarea ET: Encamina T R : Resultado ER: Encamina R L: Libre
proPar Aplicado a arquitectura “pipeline” equilibrado-18 genera dibuja ET C ER T L R maestro E1 En ¡ Ojo ! ¿ Código ? recibir(-1, &msj); if (msj == Tarea) if Ci.Libre enviar (Ci, &msj); Ci.Ocupado; else enviar (ETder, &msj); Ci.Libre ETi ¡ Autocontención ! ? if soyUltimo recibir(Ci, &Libre); enviar (Ci, &msj); else enviar (ETder, &msj);
proPar Terminación distribuida (condición) equilibrado-19 Un Pi detecta fin global => fácil Pi Pj Pk Pm Cada Pi debe alcanzar fin local ? Esclavos envían msjFin a maestro Maestro No hay mensajes en tránsito + Transferencia de tareas ¡ Puede Fallar ! rec(-1, <, ); repeat eval (sacar(<), <); if muyGrande(LT) env (alguien, sacar(<), 0); if vacia(LT) rec (-1, <, 0); until vacia(LT); ¿Código?
proPar Terminación distribuida (condición) equilibrado-20 rec(-1, <, ); repeat eval (sacar(<), <); if muyGrande(LT) env (alguien, sacar(<), 0); if vacia(LT) rec (-1, <, 0); until vacia(LT); Pi Pj Pi Pj Pi Pj Pi Pj rec(-1, <, ); repeat eval (sacar(<), <); if muyGrande(LT) env (alguien, sacar(<), 0); if vacia(LT) rec (-1, <, 0); until vacia(LT); ?
proPar Terminación ... (mensaje de ACK) equilibrado-21 Pj T Mi padre es Pj Tack inactivo activo Pi No hay más tareas Envié todos mis Tack (salvo a mi Padre) Recibí todos los Tack FinLocal T Tack Otros Procesos T T Tack Tack ¿ Fin Global ?
proPar Terminación ... (mensaje de ACK) equilibrado-22 ¡ Jerarquía Padres | Hijos ! 264.240 mensajes 14 dos padres [4 y 15] 1 15586 2 18519 3 18575 4 15826 5 18203 6 17992 8 18456 9 17924 10 16598 11 16990 7 18272 12 18477 13 17002 14 17610 15 18210
proPar Terminación ... (modo Anillo) equilibrado-23 Pn-1 Idea: Propagarse (recircular) un msjFin and fin local ¿ Fin global ? ¡ No igual a modelo Primos ! ¿Código de P0? Falla si reactivación de Procesos ¿Código de Pi?
proPar Terminación ... (modo Anillo) equilibrado-24 Pi Pj Pn-1 ¡ Pi puede estar activo ! Solución: Dar dos o más vueltas al anillo => msjBlanco + msjNegro T P0 Pi Pj Pn-1 Pj Pj ¡ P0 lo recircula como blanco ! ¿ Fin Global ?
proPar Terminación ... (modo Árbol) equilibrado-25 Idea: La misma del anillo aplicada a una estructura en árbol and fin local Nodos Hoja y Raíz especiales
proPar Camino más corto equilibrado-26 Problema: Encontrar el mejor camino de un punto a otro Escalada Cima Campamento Base
proPar Camino más corto equilibrado-27 Representación: Grafo (nodos, arcos, pesos) Escalada Cima Campamento Base ¿Qué estructura de datos?: 10 51 24 8 14 9 17 13 Matriz de adyacencia 10 8 13 24 51 14 9 17 A B C D E F origen destino Lista de adyacencia B 10 • A C D E F 8 13 24 51 14 9 17 ¿ Mejor ?
proPar Camino más corto equilibrado-28 Método de búsqueda: (Moore, 1957), (Dijkstra, 1959), .... 10 8 13 24 51 14 9 17 A B C D E F origen destino Pila de Vértices Distancias mínimas A B C D E F A B B B B E D 10 B 18 23 34 61 C E D 51 32 49 • Vi Vj di wi,j dj Newdj = min(dj, di+wi,j) ¿Cómo se puede saber la ruta?
proPar Camino más corto equilibrado-29 radioC. ¿150? #Nodos Tiempo 1024 2048 4096 8192 1:371 12:796 42:528 357:343
proPar Camino más corto equilibrado-30
proPar Camino más corto equilibrado-31 Código paralelo: Modelo centralizado inic (matriz, PV, dist); bcast (esclavos, &matriz); repeat Ei = rec(-1, &msj); if (msj == dameVertice) env (Ei, {sacar(&PV), dist}); else //msj == tomaVertices actualizar (&PV, &dist, msj); until condicionFin(); bcast (esclavos, &msjFin); maestro pila de vértices Pmaestro Pesclavo ¿Mínimos actuales? ¿Matriz de adyacencia? ¿ Condición de finalización ? Difundir todos vs cambios ¿ Código de los esclavos ?
proPar Camino más corto equilibrado-32 Código paralelo: Modelo distribuido ¿Seguimiento? 10 8 13 24 51 14 9 17 A B C D E F
proPar Camino más corto equilibrado-33 Código paralelo: Modelo distribuido (Seguimiento) ¿ Código de los esclavos ? 10 ∞ B A 8 13 24 51 C D E F 14 D C 9 E 17 F M ¿ Cuándo terminar ? m1[0] ¿ Agrupar ? m2[10] m33[34] m7[49] 18 23 61 34 10 32 51 m31[18] m34[61] m5[32] m32[23] m6[51] m4[32] 49 ∞ ¿Resultados?
proPar Camino más corto equilibrado-34 #Nodos Tiempo 1024 2048 4096 8192 1:371 12:796 42:528 357:343 radioC. ¿150? paralelo4 Tiempo 0:923 1:619 29:732 129:603 secRápido Tiempo 0:005 0:022 0:088 0:347 ?
proPar Camino más corto equilibrado-35
proPar Camino más corto equilibrado-36 FIN