PROGRAMACIN PARALELA Tema 4 Metodologa de la programacin

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

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 • Especificación de problema algoritmo paralelo. • Programación paralela: • no hay

Programación paralela • Especificación de problema algoritmo paralelo. • Programación paralela: • no hay recetas, • creatividad, • aproximación metodológica. Programación Paralela Metodología de la Programación 2

Fases • Particionado: descomponer datos y tareas independiente del número de procesadores • Comunicación:

Fases • Particionado: descomponer datos y tareas independiente 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. Programación Paralela Metodología de la Programación 3

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

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. Programación Paralela Metodología de la Programación 4

Descomposición del dominio • Conjunto de datos del mismo tamaño. • Tareas que trabajen

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. Programación Paralela Metodología de la Programación 5

Descomposición funcional • Puede haber datos distintos para las distintas funciones, • o compartición

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. Programación Paralela Metodología de la Programación 6

Particionado, chequeo • ¿Las tareas superan al menos en un orden de magnitud el

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? Programación Paralela Metodología de la Programación 7

Comunicación • Se definen canales (directos o indirectos) entre tareas que tienen que comunicar

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). Programación Paralela Metodología de la Programación 8

Comunicación • Ejemplos: Suma de n números. Relajación de Jacobi. Programación Paralela Metodología de

Comunicación • Ejemplos: Suma de n números. Relajación de Jacobi. Programación Paralela Metodología de la Programación 9

Comunicación • Preferible comunicación estructurada. • No estructurada: dificulta la programación, puede necesitar algoritmos

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. Programación Paralela Metodología de la Programación 10

Comunicación • Lectura de datos globales comunicación asíncrona. • Posibilidades: cada tarea testea periódicamente

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. Programación Paralela Metodología de la Programación 11

Comunicación, chequeo • ¿Se han balanceado las comunicaciones? Si no, algoritmos poco escalables. •

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? Programación Paralela Metodología de la Programación 12

Aglomeración • En la aglomeración y mapeo se piensa en el sistema donde se

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. Programación Paralela Metodología de la Programación 13

Aglomeración • Intentar reducir las comunicaciones: Reducir número de datos a enviar o número

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) Programación Paralela Metodología de la Programación 14

Aglomeración • Número de tareas: Con número reducido menor coste de creación. Número mayor

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. Programación Paralela Metodología de la Programación 15

Aglomeración, chequeo • ¿Hemos aglomerado tareas que se comunican frecuentemente? Si no, puede haber

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? Programación Paralela Metodología de la Programación 16

Mapeo • En memoria distribuida no hay herramientas automáticas eficientes para asignar tareas a

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. Programación Paralela Metodología de la Programación 17

Mapeo • Algoritmos de balanceo de carga: Estáticos, si el número de tareas y

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. Programación Paralela Metodología de la Programación 18

Mapeo ESTÁTICOS • Bisección recursiva: Dividir la tarea en dos subgrupos minimizando comunicaciones y

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). Programación Paralela Metodología de la Programación 19

Mapeo DINÁMICOS • Algoritmos locales: Cada procesador compara periódicamente su carga con la de

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. Programación Paralela Metodología de la Programación 20

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

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. Programación Paralela Metodología de la Programación 21