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

Transcript of Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4:...

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.