La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación

Presentaciones similares


Presentación del tema: "PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación"— Transcripción de la presentación:

1 PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación
Kumar, Grama, Gupta, Karypis, cap 3 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( ) 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. 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, ts , (start-up time). Tiempo de transferencia de un dato, tw , (word-sending time). Coste de transferencia de n datos: ts+twn Normalmente ts >>> tw >>> tc En memoria compartida la diferencia es menor, en redes o sistemas distribuidos mayor. 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 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 en otro caso Coste: (p-1)(ts+ntw) 1 2 p-1 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 en otro caso si r entre (origen+ ‪ (p-1)/2 ‫ -2) mod p (origen-1) mod p recibir datos de (r+1) mod p en otro caso si r=origen+ ‪ (p-1)/2 ‫ en otro caso ‫ Coste: ‪ (p-1)/2 ‫ (ts+ntw) En red hay colisiones: ‪ (p-1)/2 ‫ ts+(p-1)ntw Programación Paralela Rutinas Básicas de Comunicación

8 ¿En los ejemplos anteriores?
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? 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 en otro caso ¿Posible reducir computación? Coste: (p-1)(ts+ntw+ntc) 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 Coste: 2(p-1)(ts+ntw) ¿en red? Programación Paralela Rutinas Básicas de Comunicación

11 Difusión simple. Hipercubo
6 7 3 000 3 3 1 2 3 2 100 010 001 3 3 2 2 2 4 5 3 110 101 011 3 3 1 1 111 si r=0 para i=0,1,...,log p-1 enviar dato a 2i en otro caso recibir dato s=min { i / 2i >r} para i=s,s+1,...,log p-1 enviar dato r+ 2i Coste: 2 log p (ts+ntw) ¿en red? Programación Paralela Rutinas Básicas de Comunicación

12 Difusión simple. Hipercubo
6 7 3 101 3 3 1 2 2 3 2 2 001 111 100 3 3 2 4 5 3 1 011 000 110 3 3 1 010 Desde origen distinto de cero, hacer or exclusivo con el nuevo origen Programación Paralela Rutinas Básicas de Comunicación

13 Acumulación simple. Hipercubo
si r=0 para i=log p-1,...,0 recibir dato de 2i combinar en otro caso s=min { i / 2i >r} para i=log p-1,...,s recibir dato de r+ 2i enviar dato a r - 2s-1 000 1 3 2 100 010 001 1 1 2 110 101 011 1 111 Coste: log p (ts+tw +ts) Programación Paralela Rutinas Básicas de Comunicación

14 Difusión múltiple. Hipercubo
1 6 7 3 3 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 2 3 2 1 2 2 2 4 5 3 3 1 1 1 Coste: 2 log p ts+2(p-1)ntw Programación Paralela Rutinas Básicas de Comunicación

15 Difusión simple. Malla Coste:
En paralelo para i=0,1,...,r-1;j=0,1,...,r-1; con r*r=p; en cada Pij 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 Coste: 2 (√p-1) (ts+ntw ) 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 i=j y i>=r/2 si i<r/2 y i<j y j=r-1 y i=0 recibir de i,j-1 recibir de i+1,j si i<r/2 y i<j y j=r-1 y i<>0 recibir de i,j-1 recibir de i+1,j enviar a i-1,j si i<r/2 y i<j y j<>r-1 y i=0 enviar a i,j+1 si i<r/2 y i<j y j<>r-1 y i<>0 si i<r/2 y i>=j y j=0 recibir de i-1,j enviar a i+1,j recibir de i,j+1 si i<r/2 y i>=j y j<>0 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 enviar a i+1,j si i>=r/2 y i>j y j<>0 y i=r-1 enviar a i,j-1 si i>=r/2 y i>j y j<>0 y i<>r-1 si i>=r/2 y i<j y j=r-1 recibir de i+1,j enviar a i-1,j recibir de i,j-1 si i>=r/2 y i<j y j<>r-1 enviar a i,j+1 Programación Paralela Rutinas Básicas de Comunicación


Descargar ppt "PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación"

Presentaciones similares


Anuncios Google