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-121....... 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 000 011101110 001010100 111 3 2 33 3 2 1 0 76 54 32 1 1 2 3 3 3 3 2 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 101 110000011 100111001 010 3 2 33 3 2 1 0 76 54 32 1 1 2 3 3 3 3 2 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 000 011101110 001010100 111 1 2 11 1 2 3 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 0 76 54 32 1 1 2 3 3 3 3 2 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*2 1 1 1 2 2

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