programación paralela metodología de la programación 1 programaciÓn paralela tema 4:...

21
Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación • Foster, cap 2

Upload: emygdia-rosero

Post on 28-Jan-2016

326 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 1

PROGRAMACIÓN PARALELA

Tema 4: Metodología de la programación

• Foster, cap 2

Page 2: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 2

Programación paralela

• Especificación de problema algoritmo paralelo.

• Programación paralela:

• no hay recetas,

• creatividad,

• aproximación metodológica.

Page 3: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 3

Fases

• Particionado: descomponer datos y tareasindependiente del número de procesadores

• Comunicación: establecer comunicaciones entre tareas.

• Aglomeración: combinación de tareas para reducir costes.

• Mapeo: asignación de tareas a procesadores, maximizar balanceo, minimizar comunicaciones.

Page 4: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 4

Particionado

• Descomposición del problema de grano fino: gran número de tareas.

• Descomposición del dominio: primero se descomponen los datos y después las tareas.

• Descomposición funcional: primero se descomponen las tareas y después los datos.

Page 5: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 5

Descomposición del dominio

• Conjunto de datos del mismo tamaño.

• Tareas que trabajen sobre esos datos.

• Tareas pueden necesitar información de distintos conjuntos de datos.

• Posibles distintas particiones:

Ejemplo: malla tridimensional.

Page 6: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 6

Descomposición funcional

• Puede haber datos distintos para las distintas funciones,

• o compartición de datos:

Por duplicación,

Por comunicación

• Ejemplo: modelado del clima, tratamiento de imágenes.

Page 7: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 7

Particionado, chequeo• ¿Las tareas superan al menos en un orden de magnitud el número de procesadores?

Si no, poca flexibilidad para los pasos posteriores.

• ¿Se evita duplicación de computación y de almacenamiento?Si no, puede dar lugar a algoritmo no escalable.

• ¿Son las tareas de tamaño similar?Si no, puede ser difícil hacer una asignación balanceada.

• ¿Aumenta el número de tareas con el tamaño del problema?Si no, puede dar lugar a algoritmo no escalable.

• ¿Se han estudiado distintas particiones? ¿y descomposición del dominio y funcional?

Page 8: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 8

Comunicación• Se definen canales (directos o indirectos) entre tareas que tienen que comunicar datos.• Se definen mensajes a enviar y recibir.

En paralelismo de datos no se podrán crear los canales.

• Optimización de prestaciones:

Distribuyendo comunicaciones (paralelismo en comunicaciones). El sistema puede limitarlo (redes).

Comunicaciones globales: identificar conjuntos de tareas que intervienen en la comunicación. Utilizar rutinas

optimizadas, o programarlas si no están disponibles.

Solapar comunicación y computación (pipeline).

Page 9: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 9

Comunicación

• Ejemplos:

Suma de n números.

Relajación de Jacobi.

Page 10: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 10

Comunicación

• Preferible comunicación estructurada.

• No estructurada:dificulta la programación,puede necesitar algoritmos de asignación para

mejorar balanceo y reducir comunicaciones,aumenta coste.

• Dinámica: se sabe en tiempo de ejecución.

• Ejemplo: matrices dispersas.

Page 11: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 11

Comunicación

• Lectura de datos globales comunicación asíncrona.

• Posibilidades:cada tarea testea periódicamente si recibe peticiones,otro conjunto de tareas para atender requerimientos,interrupciones.

• En Memoria Compartida problema de coherencia.

• Ejemplo: backtracking y branch & bound.

Page 12: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 12

Comunicación, chequeo• ¿Se han balanceado las comunicaciones?

Si no, algoritmos poco escalables.

• Si estructura a la que se accede muy frecuentemente controlada por una tarea, cuello de botella: distribuir la estructura y crear más tareas.

• ¿Se comunica cada tarea con un número reducido?

• ¿Se pueden ejecutar las comunicaciones concurrentemente?Si no, puede dar lugar a algoritmo no escalable.

• ¿Impiden las comunicaciones que las tareas se ejecuten concurrentemente?

• ¿Se puede solapar comunicación y computación?

Page 13: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 13

Aglomeración

• En la aglomeración y mapeo se piensa en el sistema donde se va a ejecutar.

• Para obtener buenas prestaciones puede ser necesario agrupar tareas:

menos tiempo de creación,menos comunicaciones.

• Estudiar distintas maneras de agrupamiento.

• Si el número de tareas se reduce a una por procesador, el diseño está acabado.

• Ejemplo: suma de números, malla tridimensional.

Page 14: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 14

Aglomeración• Intentar reducir las comunicaciones:

Reducir número de datos a enviar o número de mensajes.

• Efecto volumen/superficie:normalmente la computación es de un orden de

magnitud mayor que la comunicación (matriz-vector, matriz-matriz),

por lo que la relación computación/comunicación es mayor al aumentar la granularidad (relajación de Jacobi)

• Algunas veces se puede reducir la comunicación replicando computación o datos (suma en anillo)

• Si las tareas no pueden ejecutarse concurrentemente se pueden aglomerar tareas de diferentes niveles (suma en árbol)

Page 15: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 15

Aglomeración• Número de tareas:

Con número reducido menor coste de creación.

Número mayor que procesadores, permite:asignar varias tareas a un procesador y solapar

comunicación y computación (por ejemplo, una tarea para comunicación y otra para computación en cada procesador),

estudiar varias posibilidades de mapeo.

El número de tareas debe variar con el tamaño del sistema y el problema.

• Tener en cuenta reutilización de código y que la salida de un programa puede ser entrada para otro.

Page 16: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 16

Aglomeración, chequeo• ¿Hemos aglomerado tareas que se comunican frecuentemente?

Si no, puede haber un gran número de comunicaciones.

• Si se replican computaciones, ¿repercute en una reducción de las comunicaciones?

Si se replican mucho puede ser perjudicial para la escalabilidad.

• ¿Se han generado tareas con coste de computación y de comunicación semejante (balanceo de la carga)?

• ¿Varía el número de tareas proporcionalmente al número de procesadores?

Si no, no escalable.

• ¿Se ha reducido todo lo posible el número de tareas sin reducir posibilidades de escalabilidad ni producir desbalanceo?

• ¿Se posibilita la reutilización de código?

Page 17: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 17

Mapeo

• En memoria distribuida no hay herramientas automáticas eficientes para asignar tareas a procesadores, pero sí en memoria compartida.

• Para reducir tiempo de ejecución:

asignar tareas que se comunican con frecuencia al mismo procesador (puede haber limitaciones en el número de tareas por procesador),

y tareas que se ejecutan concurrentemente a procesadores distintos.

Page 18: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 18

Mapeo

• Algoritmos de balanceo de carga:

Estáticos, si el número de tareas y la carga de cada una es conocido.Tienen coste adicional al principio.

Dinámicos, si no se conoce a priori, o se conoce pero la distribución de la carga no es regular, o si las tareas

pueden generar nuevas tareas. Coste adicional durante la ejecución.

• Ejemplo: matrices dispersas, branch & bound.

Page 19: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 19

Mapeo ESTÁTICOS

• Bisección recursiva:Dividir la tarea en dos subgrupos minimizando comunicaciones y manteniendo balanceo.Y seguir recursivamente.

• Métodos probabilistas:Asignar arbitrariamente. Se obtiene buena distribución sólo en algunos casos. Las comunicaciones no deben ser locales.

• Mapeo cíclico:Si se sabe que la carga evoluciona regularmente.Puede ser cíclico por bloques.

• Preprocesado:Antes de le ejecución realizar una evaluación (trazado de rayos).

Page 20: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 20

Mapeo DINÁMICOS

• Algoritmos locales:Cada procesador compara periódicamente su carga con la de procesadores vecinos, y puede haber intercambio de datos.

• Utilización de una bolsa de tareas:Los procesadores toman tareas de la bolsa y posiblemente generan nuevas tareas.La computación acaba cuando la bolsa está vacía y no hay posibilidad de generar nuevas tareas (problema de detección de la terminación).

Un único manejador de la bolsa, puede ser un cuello de botella si las tareas son pequeñas y hay comunicaciones frecuentes.Jerarquía de manejadores, que se comunican entre ellos, y

posiblemente un maestro común.Distribuida entre los procesadores. Cada procesador debe evaluar su bolsa además de computar, por lo que habrá tareas de

computación y de gestión de la bolsa.

Page 21: Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación Foster, cap 2

Programación Paralela Metodología de la Programación 21

Mapeo, chequeo• ¿Se ha considerado las dos posibilidades de creación estática y dinámica de tareas?

• Si se utiliza esquema maestro-esclavo, estudiar si el maestro se puede convertir en un cuello de botella, especialmente si puede llegar a ejecutarse en un gran número de procesadores.

• Si es posible, utilizar asignaciones estáticas, pues son simples, especialmente las probabilísticas y cíclicas, y no es necesario aplicar algoritmos de rebalanceo durante la ejecución.

• En caso de distribución probabilística o cíclica, asegurarse de que hay muchas más tareas que procesadores.