La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Paralela Rutinas Básicas de Comunicación 1 PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación Kumar, Grama, Gupta, Karypis, cap.

Presentaciones similares


Presentación del tema: "Programación Paralela Rutinas Básicas de Comunicación 1 PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación Kumar, Grama, Gupta, Karypis, cap."— Transcripción de la presentación:

1 Programación Paralela Rutinas Básicas de Comunicación 1 PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación Kumar, Grama, Gupta, Karypis, cap 3

2 Programación Paralela Rutinas Básicas de Comunicación 2 Rutinas básicas Difusión simple: enviar el mismo dato de un procesador origen al resto de procesadores (MPI_Bcast) Acumulación simple: combinar datos de todos los procesadores en uno destino (MPI_Reduce) Difusión múltiple: enviar datos de cada procesador (el mismo desde cada procesador) a todos los demás (MPI_Alltoall) Acumulación múltiple: combinar datos de todos los procesadores en todos ellos (MPI_Reduce_scatter) Difusión personalizada: enviar datos diferentes de un procesador origen al resto de procesadores (MPI_Scatter) Difusión múltiple personalizada: enviar datos diferentes de cada procesador a todos los demás Reducción prefija: acumular en cada procesador i datos del 0 al i-1 MPI_Scan( )

3 Programación Paralela Rutinas Básicas de Comunicación 3 Rutinas básicas Muchas de ellas se encuentran en las librerías de comunicación. Pueden no estar implementadas de manera eficiente para el sistema donde nos encontramos. Otras pueden no encontrarse o ser necesario programarlas para intercalarlas con computación.

4 Programación Paralela Rutinas Básicas de Comunicación 4 Modelo de comunicación Se considera topología lógica de procesos. Tiempo de inicio de comunicación, t s, (start-up time). Tiempo de transferencia de un dato, t w, (word-sending time). Coste de transferencia de n datos: t s +t w n Normalmente t s >>> t w >>> t c En memoria compartida la diferencia es menor, en redes o sistemas distribuidos mayor.

5 Programación Paralela Rutinas Básicas de Comunicación 5 Topologías más usuales Anillo unidireccional o bidireccional simple pipeline Malla o toro escalable trabajo por filas o columnas diámetro moderado Hipercubo diámetro mínimo Árbol de distintos grados pipeline diámetro moderado

6 Programación Paralela Rutinas Básicas de Comunicación 6 Difusión simple. Anillo unidireccional En paralelo para r=0,1,...,p-1 En Pr: si r=origen enviar datos a (r+1) mod p en otro caso si r<>(origen-1) mod p recibir datos de (r-1) mod p enviar datos a (r+1) mod p en otro caso recibir datos de (r-1) mod p 0p Coste: (p-1)(t s +nt w )

7 Programación Paralela Rutinas Básicas de Comunicación 7 Difusión simple. Anillo bidireccional En paralelo para r=0,1,...,p-1 En Pr: si r=origen enviar datos a (r+1) mod p enviar datos a (r-1) mod p en otro caso si r entre (origen+1) mod p y (origen+ (p-1)/2 -1) mod p recibir datos de (r-1) mod p enviar datos a (r+1) mod p en otro caso si r entre (origen+ (p-1)/2 -2) mod p (origen-1) mod p recibir datos de (r+1) mod p enviar datos a (r-1) mod p en otro caso si r=origen+ (p-1)/2 recibir datos de (r-1) mod p en otro caso recibir datos de (r+1) mod p Coste: (p-1)/2 (t s +nt w ) En red hay colisiones: (p-1)/2 t s +(p-1)nt w

8 Programación Paralela Rutinas Básicas de Comunicación 8 Comunicaciones Hay que comprobar si puede haber bloqueo: Puede depender el tipo de comunicación que se use. El coste de las comunicaciones. Puede depender del tipo de sistema en que estamos. Si permite solapar comunicación y computación. Depende del algoritmo donde se use la rutina. ¿En los ejemplos anteriores?

9 Programación Paralela Rutinas Básicas de Comunicación 9 Acumulación simple. Anillo unidireccional En paralelo para r=0,1,...,p-1 En Pr: si r=(destino+1) mod p enviar datos a (r+1) mod p en otro caso si r<>destino recibir datos de (r-1) mod p combinar datos enviar datos a (r+1) mod p en otro caso recibir datos de (r-1) mod p combinar datos ¿Posible reducir computación? Coste: (p-1)(t s +nt w +nt c )

10 Programación Paralela Rutinas Básicas de Comunicación 10 Difusión múltiple. Anillo bidireccional En paralelo para r=0,1,...,p-1 En Pr: para i=1,2,...,p-1 si r es par recibir dato (r-i) mod p de (r-1) mod p enviar dato (r-i+1) mod p a (r+1) mod p en otro caso enviar dato (r-i+1) mod p a (r+1) mod p recibir dato (r-i) mod p de (r-1) mod p Coste: 2(p-1) (t s +nt w ) ¿en red?

11 Programación Paralela Rutinas Básicas de Comunicación 11 Difusión simple. Hipercubo Coste: 2 log p (t s +nt w ) ¿en red? si r=0 para i=0,1,...,log p-1 enviar dato a 2 i en otro caso recibir dato s=min { i / 2 i >r} para i=s,s+1,...,log p-1 enviar dato r+ 2 i

12 Programación Paralela Rutinas Básicas de Comunicación 12 Difusión simple. Hipercubo Desde origen distinto de cero, hacer or exclusivo con el nuevo origen

13 Programación Paralela Rutinas Básicas de Comunicación 13 Acumulación simple. Hipercubo Coste: log p (t s +t w +t s ) si r=0 para i=log p-1,...,0 recibir dato de 2 i combinar en otro caso s=min { i / 2 i >r} para i=log p-1,...,s recibir dato de r+ 2 i combinar enviar dato a r - 2 s-1

14 Programación Paralela Rutinas Básicas de Comunicación 14 Difusión múltiple. Hipercubo Coste: 2 log p t s +2(p-1)nt w tam=1 pos=r*b nodo=r para i=0,1,...,log p-1 bit=nodo mod 2 si bit=0 enviar datos pos a pos+tam*b-1 a nodo r+tam recibir datos pos+tam*b a pos+2*tam*b-1 de nodo r+tam en otro caso recibir datos pos-tam*b a pos-1 de nodo r-tam enviar datos pos a pos+tam*b-1 a nodo r-tam pos=pos-tam*b nodo=nodo div 2 tam=tam*

15 Programación Paralela Rutinas Básicas de Comunicación 15 Difusión simple. Malla Coste: 2 (p-1) ( t s +nt w ) En paralelo para i=0,1,...,r-1;j=0,1,...,r-1; con r*r=p; en cada P ij si i=0 y j=0 enviar datos a 0,1 enviar datos a 1,0 en otro caso si i=0 y j<>r-1 recibir datos de 0,j-1 enviar datos a 0,j+1 enviar datos a 1,j en otro caso si i=0 recibir datos de 0,r-2 enviar datos a 1,r-1 en otro caso si i<>r-1 recibir datos de i-1,j enviar datos a i+1,j en otro caso recibir datos de r-2,j

16 Programación Paralela Rutinas Básicas de Comunicación 16 Difusión de procesadores en la diagonal principal a la fila y columna si i=0 y j=0 enviar a 0,1 enviar a 1,0 si i=r-1 y j<>r-1 enviar a r-1,r-2 enviar a r-2,r-1 si i=j y i=r/2 enviar a i,j-1 enviar a i+1,j enviar a i,j+1 enviar a i-1,j si i0 recibir de i,j-1 enviar a i,j+1 recibir de i+1,j enviar a i-1,j si i =j y j=0 recibir de i-1,j enviar a i+1,j recibir de i,j+1 si i =j y j<>0 recibir de i-1,j enviar a i+1,j recibir de i,j+1 enviar a i,j-1 si i>=r/2 y i>j y j=0 y i=r-1 recibir de i,j+1 recibir de i-1,j si i>=r/2 y i>j y j=0 y i<>r-1 recibir de i,j+1 recibir de i-1,j enviar a i+1,j si i>=r/2 y i>j y j<>0 y i=r-1 recibir de i,j+1 enviar a i,j-1 recibir de i-1,j si i>=r/2 y i>j y j<>0 y i<>r-1 recibir de i,j+1 enviar a i,j-1 recibir de i-1,j enviar a i+1,j si i>=r/2 y i=r/2 y i r-1 recibir de i+1,j enviar a i-1,j recibir de i,j-1 enviar a i,j+1


Descargar ppt "Programación Paralela Rutinas Básicas de Comunicación 1 PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación Kumar, Grama, Gupta, Karypis, cap."

Presentaciones similares


Anuncios Google