Usando bases de datos NoSQL para algoritmos evolutivos paralelos
Algoritmos Paralelos
-
Upload
fernandop171 -
Category
Documents
-
view
59 -
download
2
Transcript of 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
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.
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).
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Multiplicación densa Matriz - Vector
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Multiplicación densa Matriz - Matriz
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Multiplicación Matriz dispersa - Vector
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
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Camino más corto (algoritmo de Floyd)
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Quicksort
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Búsqueda del mínimo
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Puzzle de 15 piezas
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.
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.
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.
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
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Ejemplo: Proceso de búsqueda
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)
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.
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.
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
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.
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.
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Ejemplo: Quicksort
Cada paso de división se
asocia a un proceso.
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.
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.
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Ejemplo: Multiplicación de matrices
• Partición de los datos de salida:
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
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.
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Descomposición exploratoria
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.
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
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Ejemplos: Simulación discreta de eventos
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.
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.
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
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
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.
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
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
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
AT5128 – Arquitectura e Ingeniería de Computadores IIJuan Antonio Maestro (2004/05)
Ejemplo: Distribuciones en bloques
8 procesos
16 procesos
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
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.
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
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.
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.
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
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
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.
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.