ANÁLISIS Y DISEÑO DE ALGORITMOS_, Actividad 14.pdf
ANÁLISIS Y DISEÑO
DE ALGORITMOS
Prof. Rina Maria Familia
Saul De La Cruz García (22-1000)
Diseño de
Algoritmos
Paralelos
En las ciencias de la computación, un algoritmo
paralelo, en oposición a los algoritmos clásicos o
algoritmos secuenciales, es un algoritmo que puede ser
ejecutado por partes en el mismo instante de tiempo
por varias unidades de procesamiento, para finalmente
unir todas las partes y obtener el resultado correcto.
Diseño de Algoritmos
Paralelos
Hoy en día muchos problemas necesitan procesar grandes cantidades de datos y hacer
eficientes el tiempo de respuesta de cada una de estas aplicaciones. Para esto se cuenta
con la eficiencia de un computador, el cual depende directamente del tiempo requerido
para ejecutar una instrucción básica y del número de instrucciones que pueden ser
ejecutadas al mismo tiempo (Ananth et al., 2003). La programación paralela es un área
de la computación que permite aprovechar los recursos de hardware para mejorar el
tiempo de ejecución de los algoritmos.
EL DISEÑO
El diseño involucra cuatro etapas las cuales se presentan como
secuenciales pero que en la práctica no lo son.
❑Particionamiento
❑Comunicación
❑Agrupamiento
❑Asignación
Particionamiento: El cómputo y los datos sobre los cuales se opera se
descomponen en tareas. Se ignoran aspectos como el número de procesadores
de la máquina a usar y se concentra la atención en explotar oportunidades de
paralelismo.
-Proceso de dividir el cálculo y los datos en la mayor cantidad de porciones.
-Se trata de identificar las posibilidades de cálculo paralelo.
-Puede tomar la forma de particionamiento de datos o de un particionamiento
funcional. Ambos son complementarios.
PARTICIONAMIENTO
COMUNICACIÓN
Se determina la comunicación requerida para coordinar las tareas. Se
definen estructuras y algoritmos de comunicación.
Comunicación local: entre dos procesadores pasando datos de uno a otro.
Comunicación global: cuando muchos procesadores tienen que
comunicar a uno o viceversa. (ej: suma de datos)
La comunicación hace perder eficiencia paralela, hay que tratar de
disminuir el tiempo de comunicaciones.
En la programación paralela existen dos tipos de paralelismo
(Foster, 2003): paralelismo de control (descomposición funcional)
o paralelismo de datos (descomposición de dominio).
La descomposición de dominio o paralelismo de datos, como
también se le conoce, consiste en una secuencia de instrucciones
aplicadas a distintos datos.
Los datos son divididos en partes y las partes son asignadas a
diferentes procesadores.
Programación paralela
AGRUPAMIENTO
El resultado de las dos etapas anteriores es evaluado en términos de
eficiencia y costos de implementación.
De ser necesario, se agrupan tareas pequeñas en tareas más grandes.
ASIGNACIÓN
Cada tarea es asignada a un procesador tratando de maximizar la
utilización de los procesadores y de reducir el costo de comunicación.
La asignación puede ser estática (se establece antes de la ejecución del
programa) o en tiempo de ejecución mediante algoritmos de balanceo
de carga.
La asignación de tareas puede ser realizada de las siguientes
maneras:
• Estática: una tarea es asignada a un procesador desde su inicio
hasta su fin.
• Dinámica: una tarea puede ser migrada durante su ejecución.
Esto puede agregar un costo adicional.