algoritmos paralelos

50
AT5128 – Arquitectura e Ingeniería de Computadores II Juan Antonio Maestro (2004/05) Diseño de algoritmos paralelos AT5128 – Arquitectura e Ingeniería de Computadores II Juan Antonio Maestro Curso 2011-2012

Upload: fernandop171

Post on 26-Jul-2015

57 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Diseño de algoritmos paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro

Curso 2011-2012

Page 2: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Esquema del capítulo

• Visión general de algunos algoritmos serie.

• Algoritmo paralelo vs. Formulación

paralela

• Elementos de un Algoritmo paralelo• Elementos de un Algoritmo paralelo

• Métodos de descomposición:

– Extracción de la concurrencia.

• Métodos de asignación:

– Reducción de las comunicaciones por paralelismo.

Page 3: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Algunos algoritmos serie

• Multiplicación de matrices densas.

• Multiplicación de matrices dispersas.

• Eliminación Gausiana.• Eliminación Gausiana.

• Camino más corto (algoritmo de Floyd).

• Quicksort (ordenación rápida).

• Búsqueda de máximos y mínimos.

• Búsqueda heurística (problema del puzzle).

Page 4: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Multiplicación densa Matriz - Vector

Page 5: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Multiplicación densa Matriz - Matriz

Page 6: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Multiplicación Matriz dispersa - Vector

Page 7: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Eliminación Gausiana

La matriz A de un sistema de ecuaciones se reemplaza por una

matriz equivalente triangular superior

Page 8: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Camino más corto (algoritmo de Floyd)

Page 9: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Quicksort

Page 10: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Búsqueda del mínimo

Page 11: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Puzzle de 15 piezas

Page 12: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Algoritmo paralelo vs. Formulación paralela

• Formulación paralela: Paralelización de un

algoritmo serie ya diseñador. Adaptación a una

plataforma paralela.

• Algoritmo paralelo: Algoritmo que se diseña en • Algoritmo paralelo: Algoritmo que se diseña en

un inicio pensando en una plataforma paralela.

Puede diferir considerablemente de su versión

serie.

• En el curso, se trabajará principalmente con

Formulaciones paralelas.

Page 13: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Elementos de un algoritmo / formulación paralelo

• Elementos de trabajo que se pueden ejecutar

concurrentemente: Tareas.

• Asignación de tareas a múltiples procesadores.

• Distribución de la información (datos de entrada-salida • Distribución de la información (datos de entrada-salida

e intermedios) entre los procesadores.

• Gestión del acceso a datos compartidos.

• Sincronización de los procesos.

• Maximizar la concurrencia y minimizar costes

de comunicación: Mejorar el Speed-up.

Page 14: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Búsqueda de elementos de trabajo concurrentes

• Descomposición: Proceso de división del

trabajo en unidades menores y más manejables

denominadas tareas.

• Las tareas se definen a nivel de programación y • Las tareas se definen a nivel de programación y

se consideran indivisibles.

Page 15: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Multiplicación Matriz densa - Vector

• Granularidad: Número y tamaño de las tareas.

• Granularidad fina: Muchas tareas detalladas.

• Granularidad gruesa: Pocas tareas genéricas.

Descomposición en n tareas Descomposición en 4 tareas

Page 16: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Proceso de búsqueda

Page 17: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Proceso de búsqueda

Dos descomposiciones de tareas, con resultados muy diferentes:

(a) Tres etapas de proceso, con un grado de concurrencia máximo de

4.

b) Cuatro etapas de proceso, con un grado de concurrencia máximo

de 4.

(a) (b)

Page 18: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Grafo de dependencia de tareas

• En la mayoría de los casos, las tareas tienen

dependencias. No pueden empezar hasta que no acaben

las predecesoras.

• Estas dependencias se representan mediante un grafo

dirigido acíclico, denominado Grafo de Dependencia dirigido acíclico, denominado Grafo de Dependencia

de Tareas.

Page 19: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Grafo de dependencia de tareas

• Grado medio de concurrencia: Número medio

de tareas que se pueden ejecutar

concurrentemente.

• Camino crítico: El camino más largo que recorre • Camino crítico: El camino más largo que recorre

el grafo, el cual delimita el tiempo de ejecución

total del algoritmo.

• Tanto el grado de concurrencia como el camino

crítico se ven directamente afectados por la

elección de la granularidad.

Page 20: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Grafo de interacción de tareas

• Muestra los patrones de interacción de las tareas.

• Suele contener al grafo de dependencias de tareas

como un subgrafo propio.

Multiplicación de matriz dispersa

Page 21: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Métodos habituales de descomposición

• Descomposición de datos.

• Descomposición recursiva.

• Descomposición exploratoria.• Descomposición exploratoria.

• Descomposición especulativa.

• Descomposición híbrida.

Page 22: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición recursiva

• Apropiado para problemas resolubles

con la técnica Divide-y-vencerás.

• Cada uno de los subproblemas • Cada uno de los subproblemas

generados en el proceso de división se

corresponde con un proceso.

Page 23: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Quicksort

Cada paso de división se

asocia a un proceso.

Page 24: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Cálculo del mínimo

Se puede aplicar la estrategia de divide-y-vencerás a problemas

que tradicionalmente no se han resuelto con esta técnica.

Page 25: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición de datos

• Apropiado para algoritmos que trabajan con

una gran cantidad de datos: el problema está

en el volumen.

• Habitualmente se realiza en dos etapas:

– Partición de los datos.

– Cambio en la computación para trabajar con múltiples

particiones de datos.

• ¿Qué datos hay que dividir en particiones (los de

entrada, los intermedios)?: Depende del caso.

Page 26: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Multiplicación de matrices

• Partición de los datos de salida:

Page 27: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Multiplicación de matrices

• Partición de los datos intermedios:

Grafo de dependencias de datos

Page 28: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición exploratoria

• Apropiado para descomponer cálculos

basados en la búsqueda de un espacio

de soluciones.de soluciones.

Page 29: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición exploratoria

Page 30: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición exploratoria

• Puede resultar en speed-up anómalo:

– Dependiendo de dónde se encuentre la solución

dentro del espacio, la formulación paralela puede

requerir más trabajo que la formulación serie.

Speed-up anómalo debido a descomposición exploratoria

requerir más trabajo que la formulación serie.

Page 31: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición especulativa

• Usada para extraer concurrencia en

problemas donde el próximo paso es una

acción (entre varias posibles), que sólo se

puede determinar cuando la tarea actual puede determinar cuando la tarea actual

concluya.

• Esta descomposición asume un cierto

resultado de la tarea actual y ejecuta los

pasos posteriores.

– Equivalente a la ejecución especulativa a nivel de

microprocesador

Page 32: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplos: Simulación discreta de eventos

Page 33: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Descomposición especulativa

• Si la predicción es errónea:

– el trabajo realizado se desperdicia

– puede que haya que deshacer los resultados de la

tarea (restauración de contexto)tarea (restauración de contexto)

• A menudo, puede ser el único medio para

obtener concurrencia.

Page 34: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Asignación de tareas

• ¿Por qué una asignación de tareas? ¿No es

suficiente una asignación aleatoria?

• La asignación apropiada es crítica, a fin de • La asignación apropiada es crítica, a fin de

minimizar el coste asociado al paralelismo.

• Coste = p·Tp - Ts.

• Causas del coste:

– Carga de trabajo no equilibrada.

– Comunicación entre procesos.

Page 35: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Asignación de tareas

• Para una correcta asignación hay que

estudiar los grafos de dependencia e

interacción de tareas:interacción de tareas:

– ¿Se conocen las tareas a priori?

– ¿Y sus requisitos de cálculo?

– ¿Cuántos datos se asociarán por tarea?

– ¿Cómo se comunican las tareas?

Dependencia

de datos

Interacción

Page 36: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplos: Interacción simple y compleja

Interacción simple: Las

tareas se comunican sólo

con las adyacentes

Interacción compleja:

Las tareas necesitan

mucha comunicación

Page 37: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Objetivo: Equilibrado de carga

• El equilibrado de carga es fundamental para

maximizar la concurrencia.

• Una asignación equitativa de tareas a

procesadores no garantiza el equilibrado de procesadores no garantiza el equilibrado de

carga.

Page 38: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Técnicas de equilibrado de carga

• Asignación estática:

– Las tareas se distribuyen entre los procesadores antes de la

ejecución.

– Aplicable a tareas:

• Generadas estáticamente• Generadas estáticamente

• Con requisitos computaciones conocidos

• Asignación dinámica:

– Las tareas se distribuyen entre los procesadores en tiempo de

ejecución.

– Aplicable a tareas:

• Generadas dinámicamente

• Con requisitos computaciones desconocidos

Page 39: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Técnicas de equilibrado de carga

• Asignación estática:

– Distribución en array

– Particionamiento del grafo– Particionamiento del grafo

• Asignación dinámica:

– Patrones centralizados

– Patrones distribuidos

Page 40: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Asignación estática: Distribución en array

• Apropiada para algoritmos:

– que usan descomposición de datos

– sus datos se almacenan en forma de arrays– sus datos se almacenan en forma de arrays

• Tipos:

– Distribución en bloques

– Distribución cíclica

– Distribución cíclica en bloques

– Distribución aleatoria en bloques

Page 41: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Distribuciones en bloques

8 procesos

16 procesos

Page 42: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Distribuciones en bloques

Partición

unidimensional2n

p

n2

22

np

n +

Partición

bidimensional

Los datos de las zonas sombreadas A y B son requeridos por el proceso que

calcula la zona sombreada C. La partición unidimensional requiere más acceso a

datos que la bidimensional.

p

n2

p

n2

p

n22

Page 43: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Ejemplo: Distribuciones cíclicas en bloques

• Se usa para evitar problemas de desequilibrio de carga cuando

distintas partes del array necesitan carga computacional distinta.

•Se divide el array en más bloques que procesadores.

•Cada procesador se encarga de varios bloques no contiguos.

Distribuciones uni y

bidimensionales sobre 4

procesos

Ej.: Eliminación Gausiana.

Page 44: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Distribuciones aleatorias en bloques

• Algunas veces, la computación se realiza únicamente

sobre ciertas partes del array:

– por ejemplo, en la multiplicación de matrices dispersas.

El uso de distribución

cíclica en bloques llevaría

a un desequilibrio de

carga

Page 45: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Distribuciones en bloques aleatorios

Distribución aleatoria

unidimensional

Distribución aleatoria bidimensional: Mejor equilibrado de carga.

Page 46: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Particionamiento del grafo

• La asignación de procesos se puede

conseguir particionando directamente el

grafo de interacción de tareas.

• Ejemplo: Modelado basado en cálculos sobre malla.• Ejemplo: Modelado basado en cálculos sobre malla.

Page 47: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Particionamiento del grafo

Distribución aleatoria en

8 procesos

Carga equidistribuida

Distribución en 8 procesos

usando un algoritmo de

particionamiento de grafos

Carga equidistribuida+

Minimización de comunicaciones

Page 48: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Particionamiento del grafo

Otro ejemplo: Multiplicación de matriz dispersa

Asignación contigua,

Cada proceso se

ocupa de 4 filas

consecutivas consecutivas

Asignación que minimiza las

comunicaciones y mantiene

las misma carga

computacional por proceso

Page 49: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Patrones de equilibrado dinámico de carga

• Tema de máxima actualidad a nivel de

investigación.

• Patrones centralizados:

– Un cierto procesador es responsable de repartir el

trabajo.

• Patrones distribuidos:

– El trabajo se puede distribuir entre cualquier par de

procesadores.

Page 50: Algoritmos Paralelos

AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)

Asignación para minimizar los costes de interacción

• Maximizar ubicación conjunta de datos.

• Minimizar volumen de intercambio de datos.

• Minimizar frecuencia de interacción.

• Minimizar contención y hot spots.• Minimizar contención y hot spots.

• Solapar computación y comunicación.

• Réplica selectiva de datos y cálculo.

Estos objetivos se consiguen con una buena

descomposición y asignación de tareas.