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

16
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

description

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) - PowerPoint PPT Presentation

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

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

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

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

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( )

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

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.

Page 4: PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicació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.

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

Programación Paralela Rutinas Básicas de Comunicación 5

Topologías más usuales

• Anillo unidireccional o bidireccional simplepipeline

• Malla o toroescalabletrabajo por filas o columnas

diámetro moderado

• Hipercubodiámetro mínimo

• Árbol de distintos gradospipelinediámetro moderado

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

Programación Paralela Rutinas Básicas de Comunicación 6

Difusión simple. Anillo unidireccionalEn paralelo para r=0,1,...,p-1

En Pr:si r=origen

enviar datos a (r+1) mod pen otro caso si r<>(origen-1) mod p

recibir datos de (r-1) mod penviar datos a (r+1) mod p

en otro casorecibir datos de (r-1) mod p

0 p-121 .......

Coste:

(p-1)(ts+ntw)

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

Programación Paralela Rutinas Básicas de Comunicación 7

Difusión simple. Anillo bidireccionalEn 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

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

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?

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

Programación Paralela Rutinas Básicas de Comunicación 9

Acumulación simple. Anillo unidireccionalEn paralelo para r=0,1,...,p-1

En Pr:si r=(destino+1) mod p

enviar datos a (r+1) mod pen otro caso si r<>destino

recibir datos de (r-1) mod pcombinar datosenviar datos a (r+1) mod p

en otro casorecibir datos de (r-1) mod pcombinar datos

¿Posible reducir computación?

Coste:

(p-1)(ts+ntw+ntc)

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

Programación Paralela Rutinas Básicas de Comunicación 10

Difusión múltiple. Anillo bidireccionalEn 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?

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

Programación Paralela Rutinas Básicas de Comunicación 11

Difusión simple. Hipercubo

000

011101110

001010100

111

3 2

3 3

3

2

1

0

76

54

32

11

23 3

33

2

Coste:

2 log p (ts+ntw)

¿en red?

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

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

Programación Paralela Rutinas Básicas de Comunicación 12

Difusión simple. Hipercubo

101

110000011

100111001

010

3 2

3 3

3

2

1

0

76

54

32

1

1

2

3 3

33

2

Desde origen distinto de cero, hacer or exclusivo con el nuevo origen

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

Programación Paralela Rutinas Básicas de Comunicación 13

Acumulación simple. Hipercubo

000

011101110

001010100

111

1 2

1 1

1

2

3

Coste:

log p (ts+tw +ts)

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

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

Programación Paralela Rutinas Básicas de Comunicación 14

Difusión múltiple. Hipercubo

0

76

54

32

11

23 3

33

2

Coste:

2 log p ts+2(p-1)ntw

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

122

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

Programación Paralela Rutinas Básicas de Comunicación 15

Difusión simple. Malla

Coste:

2 (√p-1) (ts+ntw )

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

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

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

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