1 / 16

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

PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación. Kumar, Grama, Gupta, Karypis, cap 3. Rutinas básicas. Difusión simple: enviar el mismo dato de un procesador origen al resto de procesadores (MPI_Bcast)

jirair
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 2

  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 3

  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 4

  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 Programación Paralela Rutinas Básicas de Comunicación 5

  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 Coste: (p-1)(ts+ntw) ....... 0 1 2 p-1 Programación Paralela Rutinas Básicas de Comunicación 6

  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 ‫ (ts+ntw) En red hay colisiones: ‪(p-1)/2 ‫ ts+(p-1)ntw Programación Paralela Rutinas Básicas de Comunicación 7

  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? Programación Paralela Rutinas Básicas de Comunicación 8

  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)(ts+ntw+ntc) Programación Paralela Rutinas Básicas de Comunicación 9

  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)(ts+ntw) ¿en red? Programación Paralela Rutinas Básicas de Comunicación 10

  11. Difusión simple. Hipercubo 6 7 3 3 000 1 2 3 3 2 100 010 001 3 3 2 2 2 4 5 3 110 101 011 3 3 0 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 11

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

  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 combinar enviar dato a r - 2s-1 000 3 1 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 13

  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 0 1 1 Coste: 2 log p ts+2(p-1)ntw Programación Paralela Rutinas Básicas de Comunicación 14

  15. Difusión simple. Malla 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 15

  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 enviar a i,j-1 enviar a i+1,j enviar a i,j+1 enviar a 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 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 recibir de i,j-1 enviar a 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 enviar a i,j+1 recibir de i+1,j enviar a i-1,j 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 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<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 recibir de i+1,j enviar a i-1,j recibir de i,j-1 enviar a i,j+1 Programación Paralela Rutinas Básicas de Comunicación 16

More Related