Programación Paralela. Metodología de Diseño Etapas de la Paralelización...

35
Programación Paralela

Transcript of Programación Paralela. Metodología de Diseño Etapas de la Paralelización...

Page 1: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Programación Paralela

Page 2: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Metodología de Diseño

Page 3: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Etapas de la Paralelización

Partición/Descomposición: La computación se descompone en pequeñas

tareas que forman las unidades de concurrencia.

Coordinación: Incorporación de mecanismos para la denominación, comuni-

cación y sincronización de las tareas.

Aglomeración/Asignación: Las tareas se agrupan en procesos más grandes

para optimizar el rendimiento y/o reducir costes de desarrollo.

Proyección: Los procesos se asignan a los procesadores disponibles de forma

que se maximice la utilización y minimice los costes de comunicación.

Page 4: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Partición/Descomposición

¿Cómo particionar la Computación?• Código Estructurado: Sugerido por el código mismo (lazos, estructuras de datos, ..)• Código no Estructurado: Siempre se puede recurrir a heurísticas dinámicas.

¿Qué ocurre con los datos?• Pase de Mensajes: Deben particionarse con las computaciones (localidad)• Memoria Compartida: La localidad es siempre un factor de rendimiento

Estrategias de Particionamiento• Descomposición en Dominios : Se particionan las estructuras de datos y se generan las tareas a partir de las computaciones asociadas a cada partición.• Descomposición Funcional : Se particionan las computaciones en tareas

funcionales y se asocian los datos maximizando la localidad.

Page 5: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Descomposición en DominiosMétodo: 1. Los datos se particionan en grupos pequeños de tamaño similar 2. Se diseñan las tareas, a partir de cada uno de los grupos anteriores y

todas sus computaciones asociadas.

Estilo usual en la programación SPMD

Elección de los Datos:• Es preferible la mayor estructura de datos o la que se accede con mayor frecuencia• En códigos grandes puede ser más eficiente manejar varias descomposiciones diferentes.

Page 6: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Descomposición FuncionalMétodo: 1. Las computaciones se descomponen en tareas disjuntas

2. Los datos se estructuran en función de las tareas diseñadas

• En computación numérica, es más usual la descomposición en dominios.

• La descomposición funcional se suele combinar con la descomposición en dominios en una jerarquía en dos niveles.

Modelo Atmosférico

Modelo Hidrológico

Modelo Oceánico

Modelo de SuperficieTerrestre

Modelo Climático

Page 7: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Ejemplo de descomposición funcionalProcedure search (A)begin if (solution (A) ) then score = eval (A) report solution and score else foreach child A (i) of A

search (A(i)) endfor endifend

Algorithm 1.1 A recursive formulation of a simple searchalgorithm. When called to expand a searchtree node, this procedure checks to seewhether the node in question represents a solution. If not, the algorithmmakes recur-sive calls to the same procedure to expandeach of the offspring nodes.

Task estructure for the search example.Each circle represents a node in the searchtree and hence a call to the search proce-dure. A task is created for each node in thetree as it is explored. At any one time, sometasks are actively engaged in expanding thetree further (these are shaded in the figure);others have reached solution nodes and areterminating, or are waiting for their offspringto report back with solutions. The lines re-present the channels used to return solutions.

Page 8: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Checklist de la partición

1) Define su partición al menos un order de magnitud más de tareas que procesadores en su sistema paralelo?

2) Elimina su partición redundancia en computación y almace- namiento?

3) Son las tareas de tamaño comparable?

4) Escala el número de tareas con el tamaño del problema?

5) Ha identificado varias particiones alternativas?

Page 9: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

CoordinaciónComunicación/Sincronización:• Memoria compartida: Mientras la comunicación es implícita, la sincroniza- ción suele implementarse mediante construcciones específicas (exclusión mutua y sincronización de sucesos)• Pase de Mensajes: La comunicación y sincronización de sucesos utilizan el mismo mecanismo (mensajes explícitos), mientras que la exclusión mutua se verifica por defecto.

Algunos lenguajes modernos (ej., lenguajesde paralelismo de datos) hacen transparentela comunicación y sincronización explícita

Influencia de la Descomposición• Descomposición en Dominios: La organización eficiente de la comunicación es usualmente compleja, debido a las dependencias entre las tareas.• Descomposición Funcional: La organización eficiente de la comunicación es inmediata, consecuencia directa de la descomposición y corresponde al flujo de datos entre tareas

Page 10: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Esquemas de Comunicación

Comunicación Local/Global• Comunicación Local: Cada tarea se comunica con pocas tareas• Comunicación Global: Cada tarea se comunica con muchas ( o todas las) tareas.

Categorización de las necesidades de comunicación

Comunicación Estructurada/No estructurada• Comunicación Estructurada: Una tarea y sus vecinos forman una estructura regular• Comunicación No estructurada: El patrón de comunicaciones es irregular.

Comunicación Estática/Dinámica• Comunicación Estática: La identidad de las tareas comunicantes no cambia con el tiempo• Comunicación Dinámica: El patrón de comunicaciones cambia durante la ejecución del programa.

Comunicación Síncrona/Asíncrona• Comunicación Síncrona: Los productores y consumidores operan de forma coordinada (cooperan)• Comunicación Asíncrona: El consumidor obtiene datos sin la cooperación

del productor

Page 11: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Coordinación

Debemos establecer el acceso a datos, y la comunicación y sin-cronización entre las tareas.

Alternativas

• Memoria Compartida: Los datos se distribuyen a lo largo del espacio de memoria física, y la comunicación/sincronización se produce implícitamente

a través de variables definidas en el espacio compartido.

• Pase de mensajes: Los datos deben distribuirse explícitamente en las memo- rias locales y la comunicación/sincronización debe establecerse explícitamente (las tareas deben saber cómo están distribuidos los datos)

La distribución de datos no es esencial en un modelode memoria compartida, pero sí recomendable

Page 12: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Comunicación Global

Reducción Paralela

S = Xi

N-1

i =0

S

0 21 3 54 76

0 21 3 54 76

0 1 2 3 4 5 6 7

Algoritmo Centralizado y Secuencial

6 5 4 3 2 1 0

Algoritmo Distribuido (segmentado)

Page 13: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

0 21 3 54 76

S

S S

S

S S

S

1 1 1 1

2 2

0 0 0 0 0 0 0 0

Algoritmo Divide &Conquer

Page 14: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Comunicación No EstructuradaElementos Finitos en Ingeniería

• Patrón de comunicaciones complejo, que puede variar con el tiempo

• Se complican las operaciones de aglomeración/asignación y proyección

Page 15: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Checklist del diseño de comunicaciones

1) Realizan todas las tareas aproximadamente el mismo número de comunicaciones?

2) Cada tarea se comunica sólo con un pequeño número de ve- cinos?

3) Pueden proceder las operaciones de comunicación de forma simultánea?

4) Los cálculos asociados a diferentes tareas, puede proceder concurrentemente?

Page 16: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Aglomeración/AsignaciónAgrupación de Tareas en Procesos:• El número de procesos puede diferir del número de procesadores (multipro-

gramación)

• Interacción entre procesos pertenecientes a diferentes aplicaciones

• El número de procesos puede variar durante la ejecución de la aplicación

La aglomeración especifica un mecanismo porel cual las tareas se asignan a procesos, o son

seleccionadas por los procesos durante la ejecución

Criterios que guían la Aglomeración:• Aumento de la Granularidad: Los costes de comunicación, sincronización y

y creación/gestión de procesos influyen críticamente en el rendimiento paralelo.

• Flexibilidad/Escalabilidad

• Costes de Desarrollo

Page 17: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Aumento de la Granularidad

Efecto Superficie-a-Volumen

Las comunicaciones son proporcionales a la superficie del subdominio, mientras que las computaciones lo son al volumen.

Page 18: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Aumento de la GranularidadReplicación de Computación

Substitución de comunicaciones por computaciones redundantes

Ejemplo: Reducción Paralela

S = Xi

N-1

i =0

0 21 3 10 32S S S R R R

0 21 3 0 21 3

Soluciones sin replicación

Array: 2(N-1) pasos

Arbol:2logN pasos

S S

S SSS

R R

RR RR

Page 19: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Aumento de la GranularidadReplicación de Computación

Ejemplo: Reducción Paralela Solución con replicación

Mariposa: logN pasos

Page 20: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Aumento de la GranularidadEliminación de Comunicaciones Aglomeración de tareas no concurrentes (ej., a diferentes niveles de una estruc- tura de computación)

Ejemplo: Reducción Paralela Tareas no concurrentes aglomeradas

0 21 3 54 76

0 21 3 54 76

0 21 3

54

76

222

2

00

00

1

1

1

1 Hipercubo

Mariposa

Arbol0000

1 1

2

0 0 0 0

1 1 1 11

2 2 2 2

Page 21: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Perservando la flexibilidad

• No restringir innecesariamente la escalabilidad del algoritmo (la descomposición multidimensional es crítica)

• La capacidad de crear un número variable de tareas es crítica para asegurar la portabilidad y escalabilidad (permite realizar tareas como simultanear computación y comunicación)

• Todavía requerimos que haya más tareas que procesadores para ase- gurar una buena capacidad de balancear la carga

• La granularidad puede controlarse en tiempo de compilación o de ejecución.

Page 22: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Reduciendo los costes de desarrollo

• Diferentes estrategias de partición suelen tener costes de desarrollo distintos (seleccionar aquella que evite cambios extensos en el código)

• Normalmente los algoritmos paralelos forman parte de grandes aplicaciones, por tanto hay que evaluar los costes de integración con los restantes módulos de la aplicación.

Page 23: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Checklist del diseño de la aglomeración

1) Ha reducido la aglomeración los costes de comunicaciones aumentando la localidad?. Sino, estudie otra estrategia.

2) Si la aglomeración ha replicado computaciones (y datos), verifique que ésto es eficiente para un amplio abanico de problemas y plataformas.

3) Si ha replicado los datos, compruebe que ésto no restringe la escalabilidad de la aproximación

4) Son las tareas resultantes de similar costo en comunicaciones y computación?

5) El número de tareas aglomeradas, todavía escala con el tamaño del problema?

6) Si la aglomeración ha eliminado oportunidades de ejecución simultánea, ha verificado si todavía hay suficiente concurrencia para un rango amplio de pla- taformas?

7) Puede reducirse el número de tareas aún mas?

8) Si está paralelizando un código secuencial existente, ha evaluado sus costes?. Si son altos, ha considerado otras estrategias totalmente diferentes?

Page 24: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

ProyecciónLa proyección es Crítica en Máquinas Escalables

Aspectos de la Proyección de Procesos

• ¿Qué procesos deben ejecutarse en el mismo procesador? (multiprogramación,…)

• ¿Qué procesos se ejecutan en un procesador concreto?

Estrategias de Proyección

• Situar procesos concurrentes en procesadores diferentes (potenciar la concu- rrencia)

• Situar procesos que comunican frecuentemente en el mismo procesador (po- tenciar la localidad)

El problema de la Proyección es NP-Completo

Page 25: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Proyección

Estrategias de Proyección

• Descomposición Estructurada en Dominios: Proyección directa, minimizando comunicaciones.

• Descomposición No-Estructurada Estática en Dominios: Heurística de proyección con algún esquema estático de balanceo de la carga.

• Descomposición No-Estructurada Dinámica en Dominios: Heurística de proyección con algún esquema dinámico de balanceo de la carga

• Descomposición Funcional:Heurística de proyección con algún esquema de planificación de tareas estático o dinámico.

Page 26: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Algoritmo de Balanceode la Carga Computacional

• Técnicas especialmente diseñadas para desarrollar programas paralelos SPMD basados en la descomposición de dominios.

• Engloban las fases de particionamiento, aglomeración y pro- yección, y suelen denominarse algoritmos de particionamiento.

Aproximaciones Representativas

• Algoritmos Regulares Estáticos

- Particionamiento por Bloques - Particionamiento Cíclico (scattered)• Algoritmos Irregulares Estáticos

- Bisección Recursiva

• Algoritmos Dinámicos - Algoritmos Locales - Métodos Probabilísticos

Page 27: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Particionamiento por BloquesCaracterísticas

• Los procesos tienen una duración temporal determinable durante la fase

de compilación• Las comunicaciones son estructuradas (regulares)

Modelo de Programación:SPMD estático

Page 28: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Particionamiento Cíclico (Scattered)Características

• Los procesos tienen una duración temporal determinable durante la fase

de compilación• Las comunicaciones son estructuradas (regulares)

Modelo de Programación:SPMD estático

Page 29: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Bisección RecursivaCaracterísticas• Los procesos tienen una duración temporal determinable durante la fase de compilación• Las comunicaciones son no estructuradas (irregulares)

Modelo de Programación: SPMD estático

Técnicas de Bisección Recursiva

• Bisección de Coordenadas Recursiva: Descomposición del dominio en fun- ción de la distancia Euclidiana entre sus elementos (las comunicaciones no son optimizadas)

• Bisección Gráfica Recursiva: Descomposición del dominio en función de la conectividad entre sus elementos (reduce las necesidades de comunicación)

• Bisección Espectral Recursiva: Descomposición del dominio en función de sus propiedades espectrales (mejora la compacidad de los subdominios)

Page 30: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Bisección de Coordenadas Recursiva

Procedimiento

1. Determina la expansión más larga del dominio

2. Ordena los nodos de acuerdo con la coordenada seleccio- nada

3. Asigna la mitad de los nodos ordenados a cada subdo- minio

4. Repite recursivamente

Page 31: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Bisección Gráfica Recursiva

Procedimiento

1. Determina dos nodos periféricos del dominio

2. Ordena el resto de los nodos según la distancia gráfica a los nodos seleccionados

3. Asigna la mitad de los nodos ordenados a cada subdo- minio

4. Repite recursivamente

Page 32: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Bisección Espectral Recursiva

Procedimiento

1. Determina el vector de Fiedler del dominio usando el algoritmo de Lanczos

2. Ordena los nodos de acuerdo con el tamaño de los ele- mentos del vector de Fiedler

3. Asigna la mitad de los nodos ordenados a cada subdo- minio

4. Repite recursivamente

Page 33: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Algoritmos Locales (Dinámicos)Características

• Los procesos tienen una duración temporal no determinable durante la fase de compilación

Solución• Los procesadores comparan periódicamente su carga compu- tacional, y establecen una redis- tribución para balancearla.

Page 34: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Planificación de TareasCaracterísticas

• Muchas tareas con requerimientos débiles de localidad

Distribución de Tareas entre Procesadores

• Conflicto entre ejecución independiente (reducir costes de comunicación) y conocimiento global del estado de computación (mejorar el balanceo de la carga)

Esquemas de Planificación• Centralizado: Gestor/Trabajador

• Distribuido: Las tareas se distribuyen entre los procesadores y se ejecu- tan de forma cooperativa dinámica.

Problema de la Terminación de la Ejecución

Page 35: Programación Paralela. Metodología de Diseño Etapas de la Paralelización Partición/Descomposición: La computación se descompone en pequeñas tareas que.

Checklist del diseño de la proyección

1) Si ha considerado un diseño SPMD y es muy complejo, ha considerado uno basado en la creación dinámica de tareas?. Lo recíproco.

2) Si usa un esquema de balanceo de la carga centralizado, ha verificado que el master no es un cuello de botella?

3) Si usa un esquema dinámico de balanceo de la carga, ha eva- luado su costo?. Intente usar esquema cíclicos o probabilísticos.

4) Si usa un esquema probabilístico, tiene un número razonable de tareas? (al menos 10 veces más que procesadores)