La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ProParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,

Presentaciones similares


Presentación del tema: "ProParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,"— Transcripción de la presentación:

1 proParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás, Pipeline, Síncrona, Equilibrado de carga y Terminación 4Programación basada en memoria común 5Algoritmos y aplicaciones Ordenación, … 4 4 2, 3, 2 2, 2 5 4

2 proParTemariosíncrona-2 5Computación Síncrona 1Sincronización (Barrera y su implementación) Contador Árbol Mariposa Butterfly Problemática de interbloqueo 2Cálculos sincronizados (PRAM) Modelo Hardware / Software Algunos ejemplos simples 3Ejemplo adaptado a CLUSTER Problema de la distribución del calor

3 proParSincronización BARRERAsíncrona-3 Muchas aplicaciones presentan sincronismo MPI_Comm_size (MPI_COMM_WORLD, &numProcesos); // Computar todos paso 1 MPI_Barrier (MPI_COMM_WORLD); // Computar todos paso 2 6 int pvm_barrier( char *group, int count ) PVM (75% según Fox, … 1994)

4 proParSincronización BARRERAsíncrona-4

5 proParSincronización BARRERAsíncrona-5 Princeton Application Repository for Shared-Memory Computers

6 proParBARRERA (Contador)síncrona-6 Idea: Un contador cuenta los procesos que llegan a la barrera //barrier(4) P2P2 P1P1 P3P3 P0P Pg ¿Dónde reside? Proceso gestor de grupos send(Pg, 4) recv(Pg) 3 X send(Pg, 4) recv(Pg) 2 X send(Pg, 4) recv(Pg) 1 X send(Pg, 4) recv(Pg) 0 ¿Código de Pg? Latencia O(n)

7 proParBARRERA (Árbol)síncrona-7 Idea: Fases de sincronismo parcial por parejas (Sean 8 Pi) P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 Llegada a la Barrera Salida de la Barrera ¿Código de cada Pi? Latencia (2 log n)

8 proParBARRERA (Árbol)síncrona-8 void barrera (int yo, int dist) { if (((yo/dist)%2) == 0) { recibir (yo+dist, &msj); if (dist

9 proParBARRERA (Árbol)síncrona-9

10 proParBARRERA (Butterfly)síncrona-10 Idea: Barreras parciales por parejas (Enlaces Full Duplex) P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 Latencia (log n) ¿Código de cada Pi?

11 proParBARRERA (Butterfly)síncrona-11 void barrera (void) { for (dist=1; dist

12 proParBARRERA (Problemática de Interbloqueo)síncrona-12 Ojo en situaciones tipo Butterfly: P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P i P i enviar (P i+1, &msj); enviar (P i, &msj); recibir(P i+1, &msj); recibir(P i, &msj); ¡ Potencial interbloqueo ! P i P i enviar (P i+1, &msj); recibir(P i, &msj); recibir(P i+1, &msj); enviar (P i, &msj); Escritura cuidadosa enviarRecibir

13 proParBARRERA (Problemática de Interbloqueo)síncrona-13 MPI_Sendrecv envRec(P i+1, &msjIda, &msjVuelta); envRec(P i, &msjIda, &msjVuelta); ¡ 12 parámetros ! MPI_Sendrecv_replace envRecR(P i+1, &msj); envRecR(P i, &msj); P i-1 PiPi P i+1 envRecR(P i-2,…);envRecR(P i-1,…)envRecR(P i, …); envRecR(P i, …);envRecR(P i+1,…);envRecR(P i+2,…); ¡ Ojo !

14 proParCálculos sincronizados (PRAM)síncrona-14 Modelo Hardware (SIMD) Programa P0P0 P1P1 PnPn Reloj Instrucciones Memoria Común Los Pi trabajan síncronamente Los Pi activos ejecutan misma instrucción sobre distintos datos La instrucción: move, add, función La propia inst. dice qué Pi activo No se pasa a siguiente instrucción hasta que todos acaban EREWLectura y escritura Excluyente CREWLectura Concurrente y escritura Excluyente ERCWLectura Excluyente y escritura Concurrente CRCWLectura y escritura Concurrente

15 proParCálculos sincronizados (PRAM)síncrona-15 Modelo Software (operador: forall) forall (i=j to k [by delta]) {operaciones ejecutadas por P i [P 0..P n ]} s=0; for (i=0; i<10; i++) s = s + v[i]; forall (i=0; i<4; i++) t[i] = s + v[i]; forall (i=2; i<4; i++) Q(i); forall (i=0; i<4; i++) s = s + v[i]; fuera del forall secuencial P 0 P 0, P 1, P 2 y P 3 P 2 y P 3 Sólo válido si CRCW

16 proParCálculos sincronizados (PRAM)síncrona-16 Algunos ejemplos simples (Difusión de un dato): ¿ D = 5, N Pi quieren leerlo y máquina EREW ( N = 2 i ) ? 5 P 0 P 1 P n-1 int A[N]; 5 Replicar D 555 forall (i=0;i

17 proParCálculos sincronizados (PRAM)síncrona-17 Idea: Usar más Pi según se van teniendo copias nuevas en A 5 P0P0 inicio 55 P0P0 paso 0 5 P1P1 555 P0P0 paso 1 5 P1P1 P2P2 P3P3 555 P0P0 paso 2 (con N=8) 5 P1P1 P2P2 P3P P4P4 P5P5 P6P6 P7P7 A[0] = D;// Inicio for (i=0;i< ? ;i++)// Pasos forall (j= ? ;j< ? ;j++)// Difusión A[ ? ] = A[ ? ];// paralela logN 2i2i 2 i+1 j-2 i j Complejidad (log N)

18 proParCálculos sincronizados (PRAM)síncrona-18 Algunos ejemplos simples (Suma de un vector):Restricción: |V| = 2 i <= N V 0 V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 01 V 23 V 45 V 67 V 03 V 47 V 07 Idea: Usar un vector auxiliar (A) ¿ Código paralelo ? V A P0P0 P7P A P1P1 P3P3 P5P5 P7P A P3P3 P7P7 36 A P7P7

19 proParCálculos sincronizados (PRAM)síncrona-19 Algunos ejemplos simples (Suma de un vector):Restricción: |V| = 2 i <= N V A P0P0 P7P A P1P1 P3P3 P5P5 P7P A P3P3 P7P7 36 A P7P7 forall (i=0;i

20 proParCálculos sincronizados (PRAM)síncrona-20 ¿Cómo simular el forall con modelo de paso de mensajes? forall (P 0..P n ) Q(i); //forall (P 0..P n ) Bcast(… 0, grupo); Q(i); Barrier(grupo); PiPi ?

21 proParProblema de la distribución del calorsíncrona-21 Barra con temperatura en los extremos (1D): ¿Temperatura interior? 20º100º ¿Calor o Tibieza? ¿Modelo de difusión del calor? TaTbTc Tb se ve influido por Ta y Tc Tb (Ta + Tc) / N N-1 ¿Cuándo terminar?: NumIteraciones cotaError <

22 proParProblema de la distribución del calorsíncrona-22 #define N #define P 100 int main (int argc, char *argv[]) { int i, t; float x[P], y[P]; x[0] = y[0] = 20.0; x[P-1] = y[P-1] = 100.0; for (i=1; i

23 proParProblema de la distribución del calorsíncrona iteraciones iteraciones

24 proParProblema de la distribución del calorsíncrona-24 Placa con temperatura en los bordes (2D): ¿Temperatura interior?

25 proParProblema de la distribución del calorsíncrona-25 Placa con temperatura en los bordes (2D): ¿Temperatura interior? 200 x 200 puntos cambiosColor < iteraciones 457:883 (seg:mseg)

26 proParProblema de la distribución del calorsíncrona-26 Zona con temperatura en los bordes (2D): ¿Puedo pasar? ¿Código paralelo? Aguanto hasta 71º Aguanto hasta 71,5º Aguanto hasta 71,25º ¿Seguro? Cambios<6

27 proParProblema de la distribución del calorsíncrona-27 for (i=1; i

28 proParProblema de la distribución del calorsíncrona-28 Particionamiento P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 P 11 P 12 P 13 P 14 P 15 P0P0 P9P9 ¡ Comunicación con 4 vecinos !¡ Comunicación con 2 vecinos !

29 proParProblema de la distribución del calorsíncrona-29 Particionamiento

30 proParProblema de la distribución del calorsíncrona-30 ¡ Ojo al partir ! (Fila de puntos fantasma) Proceso P i Proceso P i+1 Puntos fantasmas FIN


Descargar ppt "ProParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,"

Presentaciones similares


Anuncios Google