Programación Paralela Metodología de la Programación 1 PROGRAMACIÓN PARALELA Tema 4:...
-
Upload
emygdia-rosero -
Category
Documents
-
view
298 -
download
0
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/1.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/2.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/3.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/4.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/5.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/6.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/7.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/8.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/9.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/10.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/11.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/12.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/13.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/14.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/15.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/16.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/17.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/18.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/19.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/20.jpg)
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.](https://reader033.fdocument.pub/reader033/viewer/2022061503/5665b4351a28abb57c8ffcd1/html5/thumbnails/21.jpg)
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.