Este documento describe las etapas clave para el diseño de algoritmos paralelos, incluyendo particionamiento, comunicación, aglomeración y mapeo. Explica que el particionamiento divide los cálculos y datos en tareas más pequeñas, la comunicación considera la cantidad y tamaño de los mensajes intercambiados, la aglomeración combina tareas para mejorar el rendimiento, y el mapeo asigna tareas a procesadores para maximizar la utilización.
2. Concepto
La necesidad que surge para
resolver problemas que
requieren tiempo elevado de
cómputo origina lo que hoy se
conoce como computación
paralela. Mediante el uso
concurrente de varios
procesadores se resuelven
problemas de manera más
rápida que lo que se puede
realizar con un solo procesador.
2
3. Diseño de algoritmos paralelos
Los algoritmos paralelos son extremadamente
importantes para solucionar problemas
grandes para muchos campos de aplicación.
En esta sección se describen las etapas
típicas para el diseño de los algoritmos
paralelos:
• Particionamiento
• Comunicación
• Aglomeración
• Mapeo
3
5. Concepto
• Los cálculos se descomponen en pequeñas tareas. Usualmente es independiente de la
arquitectura o del modelo de programación. Un buen particionamiento divide tanto los cálculos
asociados con el problema como los datos sobre los cuales opera.
• En esta etapa se buscan oportunidades de paralelismo y se trata de subdividir el problema lo
más finamente posible, es decir; que la granuralidad sea fina. Un grano es una medida del
trabajo computacional a realizar.
5
7. Concepto
• En la etapa de comunicación hay que tener en cuenta los siguientes aspectos: Todas las tareas
deben efectuar aproximadamente el mismo número de operaciones de comunicación. Si esto
no se da, es muy probable que el algoritmo no sea extensible a problemas mayores ya que
habrán cuellos de botella.
• En la etapa de comunicación hay que tener en cuenta los siguientes aspectos:
• La comunicación entre tareas debe ser tan pequeña como sea posible.
• Las operaciones de comunicación deben poder proceder concurrentemente.
• Los cómputos de diferentes tareas deben poder proceder concurrentemente.
7
9. Concepto
• Las tareas y las estructuras de comunicación definidas en las dos primeras etapas del diseño
son evaluadas con respecto a los requerimientos de ejecución y costos de implementación. Si
es necesario, las tareas son combinadas en tareas más grandes para mejorar la ejecución o
para reducir los costos de comunicación y sincronización.
• Mediante la agrupación de tareas se puede reducir la cantidad de datos a enviar y así reducir
el número de mensajes a transmitir y por ende el costo de comunicación.
9
11. Concepto
• Cada tarea es asignada a un procesador de tal modo que intente satisfacer las metas de
competencia al maximizar la utilización del procesador y minimizar los costos de comunicación.
• • Hay dos formas de mapeo: estático y dinámico.
11
12. Mapeo dinámico
• Cuando la carga de trabajo varia con los cómputos
• Cuando hay gran desbalance o el grafo de dependencia es dinámico
• Centralizado
• • Arquitectura maestro-esclavo
• • Fácil de mantener
• • Puede tener problemas de escalabilidad
• • Distribuido
• • Un conjunto de tareas es distribuida entre procesos
• • Cada proceso puede recibir o enviar tareas a un par
• • Soluciona problemas de escalabilidad
12
13. En la última fase del diseño de algoritmos paralelos (mapeo) lo que se toma en cuenta es la
arquitectura de la computadora paralela, debido a que los algoritmos diseñados para la
memoria compartida presentan otras características que los diferencia de los algoritmos
diseñados para arquitecturas de memoria distribuida.
Programación para memoria
compartida.
En los sistemas de multiprocesadores,
cada procesador puede acceder a toda la
memoria, por lo que hay un espacio de
direccionamiento compartido.
1
Programación con paso de mensajes.
Si la memoria esta distribuida entre los
procesadores, entonces la programación
es mas compleja y será necesario
solicitarla y transferir a través de
mensajes.
2
9/3/20XX 13
14. Ejemplo
• Diseño de Algoritmos Paralelos basados en el
modelo BSP y Multi-BSP
El modelo Bulk-Synchronous Parallel (BSP)[Val90]
propone que los algoritmos paralelos sean diseñados
y evaluados no sólo por el balance clásico entre el
tiempo y el número de procesadores, sino también
por la comunicación y la sincronización.
Este modelo establece un puente entre los algoritmos
paralelos y las arquitecturas de hardware. La
sencillez de la programación, la portabilidad y el
modelo de costo asociado han estimulado el
desarrollo de un gran número de algoritmos BSP
paralelos.
14
15. Referencias
15
Introducción a la Computación Paralela.
http://informatica.uv.es/iiguia/ALP/materiales/1_1_a_ComputacionParalela.p
df
Análisis de algoritmos paralelos.
http://dis.um.es/~domingo/apuntes/AlgProPar/1819/analisis.pdf
Diseño de Algoritmos para Plataformas Paralelas.
http://sedici.unlp.edu.ar/bitstream/handle/10915/27273/Documento_completo
.pdf?sequence=1
Principios de diseño de algoritmos paralelos.
https://www.frbb.utn.edu.ar/hpc/lib/exe/fetch.php?media=2016-03-disenno-
algoritmos-paralelos.pdf
Diseño de Algoritmos Paralelos.
https://gc.scalahed.com/recursos/files/r161r/w25474w/DisenoDeAlgoritmosP
aralelos.pdf