COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación...

43
COMPUTACIÓN DE ALTAS PRESTACIONES Análisis de algoritmos paralelos REFERENCIAS  Foster, cap 3  Kumar, Grama, Gupta, Karypis, cap 4  Wilkinson, Allen, cap 2.3 y 2.4

Transcript of COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación...

Page 1: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

COMPUTACIÓN DE ALTAS PRESTACIONES

Análisis de algoritmos paralelos

REFERENCIAS

• Foster, cap 3

• Kumar, Grama, Gupta, Karypis, cap 4

• Wilkinson, Allen, cap 2.3 y 2.4

Page 2: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Análisis de algoritmos paralelos

Los procesadores paralelos se usan para acelerar la resolución de problemas de alto coste computacional. La finalidad principal consiste en reducir el tiempo de ejecución: 

si el tiempo secuencial t(n) se intentará que usando p procesadores el tiempo 

se reduzca a t(n)/p.

Ver algunas medidas que nos dan idea de la "bondad" de un algoritmo paralelo. 

Page 3: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo secuencial

•  El  tiempo  de  ejecución  de  un  programa  secuencial depende de:

tamaño de la entrada,compilador, máquina,programador, ..., 

si nos olvidamos de valores constantes dependientes del sistema (por ejemplo el coste de una operación aritmética en la máquina donde ejecutamos el programa) podemos considerar el tiempo función del tamaño de la entrada: t(n). El  tiempo desde que empieza  la ejecución del programa hasta que acaba.

Page 4: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución paralelo

•  En  un  programa  paralelo  la  estimación  del  tiempo  es más compleja. Además de los parámetros anteriores, depende de:

número de procesadores t(n,p),de  la manera en que están conectados entre sí (topología)y con los módulos de memoria 

(memoria compartida o distribuida)

•  Es  el  tiempo  transcurrido  desde  que  empieza  la ejecución  del  primero  de  los  procesadores  hasta  que acaba el último de ellos. 

Page 5: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución paralelo

DIFICULTADES:

•  No  siempre  es  fácil  determinar  el  orden  en  que  los procesadores empiezan y acaban. 

• A  lo  largo de  la ejecución de un programa paralelo hay puntos de sincronización de los que no siempre podemos determinar  su  duración  al  no  saber  en  el  orden  en  que van a llegar los distintos procesos a estos puntos.

Page 6: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución paralelo

• Esquema de programa paralelo:

Computación 1Comunicación 1 (sincronización en memoria compartida)Computación 2Comunicación 2...

t(n,p)=ta(n,p)+tc(n,p)

ta(n,p) : suma de los tiempos de las distintas partes de computacióntc(n,p) : suma de los tiempos de las distintas partes de comunicación

Page 7: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución paralelo, ejemplo

• Programa paralelo en dos procesadores:

Computación 1      2     3

Comunicación 1      1     1

Computación 2      3     2

Comunicación 2      1     1

t(n,p)=ta(n,p)+tc(n,p)=7 (si se hace por separado)

treal(n,p)=ta(n,p)+tc(n,p)+toverhead(n,p)=8

Page 8: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución paralelo, ejemplo

     2    3

     1     

t(n,p)=ta(n,p)+tc(n,p)=15

treal(n,p)=ta(n,p)+tc(n,p)­tsolapamiento(n,p)=14

Page 9: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Tiempo de ejecución

• Overhead debido a: sincronización, puesta en marcha de los procesos, sobrecarga de la red de comunicación, ... 

• Se suele considerar:

t(n,p)=ta(n,p)+tc(n,p)+to(n,p)­ts(n,p)

• Minimizar el tiempo de overhead.• Maximizar el solapamiento.

Page 10: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números• Secuencial: t(n)=n­1

• Paralelo con n/2 procesadores, como mínimo t(n)/(n/2)=2

En cada Pi, i=0,1,...,n/2­1inicio=2*idesplazamiento=1activo=truepara k=1,2,...,log n

si activoa[inicio]=a[inicio]+a[inicio+desplazamiento]desplazamiento=desplazamiento*2

finsisi i mod desplazamiento <>0

activo=falsefinsi

finpara

Page 11: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números

• Pasos: log n

• Trabajo adicional (overhead):Comprobación de si el procesador trabaja,Uso de las variables,Actualización de las variables.

• Con n=64si cada paso secuencial y paralelo igual coste:

t(n)≅8*t(n,p)si cada paso secuencial coste 2 y paralelo coste 5:

 t(n)≅3.5*t(n,p)

• Y en memoria distribuida problema de acceso a los datos.

Page 12: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En hipercubo• Cada procesador tiene dos valores, a y b

En cada Pi, i=0,1,...,n/2­1desplazamiento=1activo=truepara k=1,2,...,log n­1

si activoa=a+bdesplazamiento=desplazamiento*2si i mod desplazamiento <>0

activo=falseenviar a a i­desplazamiento/2

en otro casorecibir en b de i+desplazamiento/2

finsifinsi

finparasi i=0

a=a+bfinsi

Page 13: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En hipercubo

P0

6  5 

P3

13  7 

P1

5  3 

P2

22 13 

P0

0  1 

P3

6  7 

P1

2  3 

P2

4  5 

P0

1  1 

P3

13  7 

P1

5  3 

P2

9  5 

P0

1  5 

P3

13  7 

P1

5  3 

P2

9  13 

P0

6  22 

P3

13  7 

P1

5  3 

P2

22 13 

P0

28 22 

P3

13  7 

P1

5  3 

P2

22 13 

Page 14: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En hipercubo• Pasos: log n

• Trabajo adicional (overhead):Comprobación de si el procesador trabaja,Uso de las variables,Actualización de las variables,Comprobación de enviar o recibir,Envío o recepción.

• Con n=64si cada paso secuencial coste 2 y paralelo coste 7:

 t(n)≅2,5*t(n,p)si ts=2*tw y tw=2*tc:

 t(n)≅1,5*t(n,p)si ts=10*tw y tw=10*tc:

 t(n)≅0,16*t(n,p)

Page 15: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En malla

Page 16: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En malla

• Si p=2n

2*(1+2+22+...+2n/2­1 )= 2n/2+1   comunicaciones

• Con n=64si ts=2*tw y tw=2*tc:

 t(n)≅1,4*t(n,p)si ts=10*tw y tw=10*tc:

 t(n)≅0,1*t(n,p)

Page 17: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números. En anillo

• Si p=2n

1+2+22+...+2n­1 = 2n –1= p­1 comunicaciones

• Con n=64si ts=2*tw y tw=2*tc:

 t(n)≅0,74*t(n,p)si ts=10*tw y tw=10*tc:

 t(n)≅0,04*t(n,p)

Page 18: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Coste de comunicaciones

• Son de los siguientes órdenes:      Comunicación vecinos Comunicación todos

hipercubo  log p/2   log p/2malla  2*√p   log p/2anillo  p­1   log p/2red  p­1  

• Además, la red puede estar congestionada al haber muchos mensajes por haber muchos procesadores.• Problemas:

Problema de poco coste y no apropiado para resolver en paralelo,

granularidad pequeña, sólo como ayuda para diseñar un programa pero no como programa final.

Page 19: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Causas de reducción de las prestaciones

• Contención de memoria:En memoria compartida el acceso a datos comunes o que están en el mismo bloque de memoria producirá contención.Si los datos son de lectura puede no haber ese problema.En el ejemplo los procesadores escriben en zonas distintas. No hay problema de coherencia, pero puede haber de contención si hay datos en los mismos bloques de memoria.

• Código secuencial:Puede haber parte imposible de paralelizar, como puede ser  la I/O.En el ejemplo la inicialización de variables. Además, si los datos están inicialmente en un procesador y hay que difundirlos el coste es lineal.

• Tiempo de creación de procesos:El programa empieza a ejecutarse con un proceso que pone en marcha los demás.El coste de creación de los procesos puede ser importante si la granularidad de éstos es pequeña.

Page 20: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Causas de reducción de las prestaciones

• Computación extra:Si se obtiene programa paralelo a partir de secuencial, son necesarias computaciones adicionales por:

uso de variables de control,comprobación de identificadores de proceso,cálculos adicionales o comunicaciones para obtener datos 

calculados por otro procesador, ...

• Comunicaciones:En memoria distribuida, es tiempo adicional al aritmético.Pueden implicar trabajo de procesadores intermedios.

• Tiempo de sincronización:Cuando un proceso tiene que esperar a que estén disponibles datos procesados por otro.Conlleva comunicaciones en memoria distribuida.

Page 21: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Causas de reducción de las prestaciones

• Desbalanceo de la carga:

El volumen total de la computación no se distribuye por igual entre todos los procesadores:

en el ejemplo, en el primer paso trabajan todos pero en los pasos siguientes va disminuyendo el número de procesadores que trabajan,

también es posible que partamos de una entrada que no se puede balancear, por ejemplo si tenemos 12 datos para 8 procesadores,

o que el volumen de datos varíe a lo largo de la ejecución, con  lo que se necesitaría balanceo dinámico.

Page 22: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Granularidad de la computación

• Uso de muchos procesadores no es realista:No dispondremos de tantos procesadores.Aunque dispongamos de ellos hay caída de las prestaciones.

• La granularidad del sistema (sistema físico+algoritmo) indica la cantidad de computación y datos asignados a cada procesador:Grano fino: si a cada procesador se asignan pocos datos o se realiza poca computación entre comunicaciones.Grano grueso: si a cada procesador se asignan muchos datos o se realiza mucha computación entre comunicaciones.

• Interesa programación paralela cuando el paralelismo es de grano grueso.

 

Page 23: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números con p procesadoresEn cada Pi, i=0,1,...,p­1

suma=0para j=i*n/p, ...,(i+1)*n/p­1

suma=suma+a[j]finparasincronizacióna[i]=sumainicio=i*2desplazamiento=1si i mod 2=0

activo=trueen otro caso

activo=falsefinsipara k=1,2,...,log p­1

si activoa[inicio]=a[inicio]+a[inicio+desplazamiento]desplazamiento=desplazamiento*2

finsisi i mod desplazamiento <>0

activo=falsefinsi

finpara

Page 24: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma, en memoria distribuidaEn cada Pi, i=0,1,...,p­1

suma=0para j=0, ...,n/p­1 suma=suma+a[j] finparasi i mod 2=0

recibir en b de i+1 activo=trueen otro caso

enviar suma a i­1 activo=falsefinsidesplazamiento=2para k=1,2,...,log p­2

si activosuma=suma+bdesplazamiento=desplazamiento*2si i mod desplazamiento <>0

activo=falseenviar suma a i­desplazamiento/2

en otro casorecibir en b de i+desplazamiento/2

finsifinsi

finparasi i=0 suma=suma+b finsi

Page 25: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Suma de n números con p procesadores• En memoria compartida todas las variables son locales salvo el array a.• En memoria distribuida la sincronización por el paso de mensajes.• El tamaño del problema (n) es múltiplo del número de procesadores (p). Se puede generalizar fácilmente.• t(n,p)=2*n/p*tc+6*(log p­1)*(ts+tw)

si p<<<n podemos tener en cuenta sólo los términos de mayor orden y t(n)/t(n,p)=p, que es lo mejor que se puede obtener

para ir 10 veces más rápido:   con ts=2*tw y tw=2*tc,       si n=1000000, 100000, 10000, p=10   con ts=10*tw y tw=10*tc, es n=330*p*log p      si n=1000000 p=10, 100000 p=11, 10000 no posible

Page 26: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Speed-up• Mide la ganancia de velocidad que se obtiene con un programa paralelo.• Es el cociente entre el tiempo secuencial y el paralelo:

S(n,p)=t(n)/t(n,p)• ¿Qué t(n)?

 El del mejor algoritmo secuencial que resuelve el problema, pero ¿cuál es el “mejor algoritmo secuencial”? depende del tamaño de la entrada, distribución de los datos, máquina, ..., y puede no conocerse. El del mejor algoritmo secuencial conocido. Pero depende de los mismos parámetros anteriores. Tiempo de ejecución en un procesador del algoritmo paralelo. Pero puede que el mejor esquema para paralelizar no sea bueno en secuencial. El tiempo de ejecución de un algoritmo secuencial “razonablemente bueno”. Habrá que indicar cuál se usa.

Page 27: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Speed-up• El speed­up será menor que el número de procesadores usado. Si no podría hacerse un algoritmo secuencial mejor que el que se usa, simulando el algoritmo paralelo.• En algunos casos puede haber speed­up superlineal por mejor gestión de la memoria al usar más procesadores.• Para un tamaño de problema fijo se aleja del valor óptimo al aumentar el número de procesadores.• Para un número de procesadores fijo aumenta al aumentar el tamaño del problema. 0

5

10

15

20

25

30

35

40

1000 2000 3000 4000 5000

p=10p=20p=30p=40p=50

Page 28: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Speed-up, suma con n/2 procesadores

• En memoria compartida: n/log n→∞

• En hipercubo, y malla o anillo con comunicaciones directas: 

n/((1+ts+tw)*log n)→∞

• En malla sin comunicaciones directas: n/(log n+(ts+tw)*2*√n)→∞ 

• En anillo sin comunicaciones directas y en red: n/(log n+(ts+tw)*n)→1/(ts+tw) 

Page 29: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Eficiencia• Da idea de la porción de tiempo que los procesadores se dedican a trabajo útil.• Es el speed­up partido por el número de procesadores:

E(n,p)=S(n,p)/p=t(n)/(p*t(n,p))• Valor entre 0 y 1.• Para un tamaño de problema fijo se aleja del valor óptimo (1) al aumentar el número de procesadores.• Para un número de procesadores fijo aumenta al aumentar el tamaño del problema. 0

0,10,20,30,40,50,60,70,80,9

1

1000 2000 3000 4000 5000

p=10p=20p=30p=40p=50

Page 30: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Eficiencia, suma con n/2 procesadores

• En memoria compartida: 2/log n→0

• En hipercubo, y malla o anillo con comunicaciones directas: 

2/((1+ts+tw)*log n)→0

• En malla sin comunicaciones directas: 2/(log n+(ts+tw)*2*√n)→0 

• En anillo sin comunicaciones directas y en red: 2/(log n+(ts+tw)*n)→0 

Page 31: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Speed-up, suma con p procesadores

Con p fijo

• En memoria compartida: n/(n/p+log p)→p

• En hipercubo, y malla o anillo con comunicaciones directas: 

n/(n/p+(1+ts+tw)*log p)→p

• En malla sin comunicaciones directas: n/(n/p+log p+(ts+tw)*2*√p)→p 

• En anillo sin comunicaciones directas y en red: n/(n/p+log p+(ts+tw)*p)→p 

Page 32: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Eficiencia, suma con p procesadores

Con p fijo

• En memoria compartida: n/(n+p*log p)→1

• En hipercubo, y malla o anillo con comunicaciones directas: 

n/(n+(1+ts+tw)*p*log p)→1

• En malla sin comunicaciones directas: n/(n+p*log p+(ts+tw)*2*p*√p)→1 

• En anillo sin comunicaciones directas y en red: n/(n+p*log p+(ts+tw)*p2)→1 

Page 33: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Coste• Representa el tiempo (el trabajo) realizado por todo el sistema en la resolución del problema.

• Es el tiempo de ejecución por el número de procesadores usados:

C(n,p)=p*t(n,p)

• En algoritmo óptimo coincidiría con el tiempo secuencial, pero en general es mayor.

• La diferencia se llama función overhead:to(n,p)=C(n,p)­t(n)=p*t(n,p)­t(n)

Es distinto de la idea de overhead vista anteriormente y difícilmente medible.

Page 34: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Distribución del trabajo

• Es importante para mejorar el balanceo. 

• En memoria distribuida puede reducir el coste de las comunicaciones asignando datos que se comunican frecuentemente a procesadores vecinos.Evita comunicaciones, congestión de la red y colisiones.

• En memoria compartida puede influir en el coste de los accesos a memoria, si procesadores distintos acceden a bloques distintos. Normalmente que los procesadores accedan a bloques de datos. Esto además mejora el uso de la jerarquía de memoria.

Page 35: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Distribución de datos. Suma de n números. En malla

01 2 3

45 6 7

89 10 11

1213 14 16

Page 36: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Distribución de datos. Suma de n números. En anillo

0 123 45 6 7

7 comunicaciones

5 comunicaciones

Page 37: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Escalabilidad• Para un sistema paralelo interesa que las prestaciones se sigan manteniendo en cierta medida al aumentar el tamaño de sistema.

• No se puede seguir manteniendo las prestaciones manteniendo el tamaño del problema fijo y aumentando el número de procesadores.

• Se tratará de mantener las prestaciones al aumentar el tamaño del sistema pero aumentando el tamaño del problema. Los sistemas (físicos o lógicos) que cumplen esto se dicen escalables.

• La idea es, para un determinado programa, ser capaces de determinar si en el futuro, cuando aumente el número de procesadores y el tamaño de problemas que se quieren resolver, se seguirán manteniendo las prestaciones.

Page 38: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Función de isoeficiencia• Da  idea de  cómo debe  crecer  la  entrada del  problema en función del número de procesadores para mantener la eficiencia constante.

to(n,p)=p*t(n,p)­t(n)

t(n,p)=(to(n,p)+t(n))/p

E(n,p)=t(n)/(to(n,p)+t(n))

t(n)=(E(n,p)/(1­E(n,p))*to(n,p)=K*to(n,p)

Para  obtener  cómo  debe  crecer  n  en  función  de  p  para mantener  la  eficiencia  constante  basta  comparar  el  tiempo secuencial con la función overhead del paralelo.

Page 39: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Isoeficiencia, suma con p procesadores

Sin constantes, pues interesa la forma en que crece

• En memoria compartida, hipercubo, y malla o anillo con comunicaciones directas : 

t(n)=n ∝ to(n,p)=n+p*log pFunción de isoeficiencia: p*log p

• En malla sin comunicaciones directas: t(n)=n ∝ to(n,p)=n+p*log p+p*√p

Función de isoeficiencia: p1.5    (la mayor)

• En anillo sin comunicaciones directas y en red: t(n)=n ∝ to(n,p)=n+p*log p+ p2

Función de isoeficiencia: p2 (la mayor)

Page 40: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Isoeficiencia, suma con p procesadoresPara mantener las prestaciones al variar de p1 a p2 

procesadores, el tamaño debe aumentar proporcional a f(p2)/f(p1)

Procesadores: 4 a 16 16 a 64 64 a 256

memoria compartida, hipercubo, y malla o anillo        8      6      5.33con comunicaciones directas 

malla sin        8      8       8comunicaciones directas 

anillo sin comunicaciones       16      16       16directas y en red 

Todos escalables. Unos más que otros.

Page 41: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Estudio experimental de la escalabilidad

•  Se  estudia  el  número  de  operaciones  por  segundo (flops) por procesador:Variando el  tamaño de  la entrada al variar el número de procesadores,O utilizando el máximo tamaño de la entrada que cabe en la memoria del sistema

proc tam flops1 100 1005 500        9925 2500   96125 12500   91

proc tam flops1 100 100 5  500       10225 2500   90125 12500   46

Page 42: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Estudio experimental•  Diseño  de  experimentos  que  nos  permitan  obtener conclusiones:

­ Determinar qué  tipo de conclusiones se quiere obtener: en cuanto a speed­up, escalabilidad.­  Definir  el  rango  de  los  experimentos:  número  de procesadores y tamaño del problema.­ Comparar los resultados experimentales con los teóricos.­ Si no coinciden revisar los estudios teóricos o la forma en que se han hecho los experimentos.

• Pueden consistir en:­ Estudiar el programa completo.­  Estudiar  el  comportamiento  en  los  distintos procesadores: ¿balanceo de la carga? ¿sincronización? ...­  Dividir  el  programa  en  partes  para  estudiarlas  por separado.

Page 43: COMPUTACIÓN DE ALTAS PRESTACIONESdis.um.es/~domingo/apuntes/CAP/0708/AnaAlgPar.pdf · Computación 1 Comunicación 1 (sincronización en memoria compartida) Computación 2 Comunicación

Comparación estudio teórico-experimental

•  Se  pueden  estimar  los  valores  constantes  en  las  fórmulas teóricas:

­  En  particular  ts  y  tw  se  obtienen  con  un  ping­pong,  o pueden  tener  valores  distintos  para  distintas  operaciones de comunicación.­ El coste de la computación se puede estimar ejecutando parte del programa en un procesador.

• Ajuste del modelo teórico con datos experimentales:­  Obtener  valores  constantes  en  el  estudio  teórico haciendo  ajuste  de  mínimos  cuadrados  con  resultados experimentales.­ Estudio asintótico: comportamiento teniendo en cuenta el término de mayor orden de la fórmula teórica, compararlo con la gráfica experimental.