Diseño de algoritmos paralelos
Diseño de algoritmos paralelos
Diseño de algoritmos paralelos
¡Convierta sus PDFs en revista en línea y aumente sus ingresos!
Optimice sus revistas en línea para SEO, use backlinks potentes y contenido multimedia para aumentar su visibilidad y ventas.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Diseño <strong>de</strong> <strong>algoritmos</strong> <strong>paralelos</strong><br />
Curso 2011-2012
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Esquema <strong>de</strong>l capítulo<br />
• Visión general <strong>de</strong> algunos <strong>algoritmos</strong> serie.<br />
• Algoritmo paralelo vs. Formulación<br />
paralela<br />
• Elementos <strong>de</strong> un Algoritmo paralelo<br />
• Métodos <strong>de</strong> <strong>de</strong>scomposición:<br />
– Extracción <strong>de</strong> la concurrencia.<br />
• Métodos <strong>de</strong> asignación:<br />
– Reducción <strong>de</strong> las comunicaciones por paralelismo.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Algunos <strong>algoritmos</strong> serie<br />
• Multiplicación <strong>de</strong> matrices <strong>de</strong>nsas.<br />
• Multiplicación <strong>de</strong> matrices dispersas.<br />
• Eliminación Gausiana.<br />
• Camino más corto (algoritmo <strong>de</strong> Floyd).<br />
• Quicksort (or<strong>de</strong>nación rápida).<br />
• Búsqueda <strong>de</strong> máximos y mínimos.<br />
• Búsqueda heurística (problema <strong>de</strong>l puzzle).
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Multiplicación <strong>de</strong>nsa Matriz - Vector
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Multiplicación <strong>de</strong>nsa Matriz - Matriz
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Multiplicación Matriz dispersa - Vector
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Eliminación Gausiana<br />
La matriz A <strong>de</strong> un sistema <strong>de</strong> ecuaciones se reemplaza por una<br />
matriz equivalente triangular superior
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Camino más corto (algoritmo <strong>de</strong> Floyd)
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Quicksort
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Búsqueda <strong>de</strong>l mínimo
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Puzzle <strong>de</strong> 15 piezas
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Algoritmo paralelo vs. Formulación paralela<br />
• Formulación paralela: Paralelización <strong>de</strong> un<br />
algoritmo serie ya diseñador. Adaptación a una<br />
plataforma paralela.<br />
• Algoritmo paralelo: Algoritmo que se diseña en<br />
un inicio pensando en una plataforma paralela.<br />
Pue<strong>de</strong> diferir consi<strong>de</strong>rablemente <strong>de</strong> su versión<br />
serie.<br />
• En el curso, se trabajará principalmente con<br />
Formulaciones paralelas.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Elementos <strong>de</strong> un algoritmo / formulación paralelo<br />
• Elementos <strong>de</strong> trabajo que se pue<strong>de</strong>n ejecutar<br />
concurrentemente: Tareas.<br />
• Asignación <strong>de</strong> tareas a múltiples procesadores.<br />
• Distribución <strong>de</strong> la información (datos <strong>de</strong> entrada-salida<br />
e intermedios) entre los procesadores.<br />
• Gestión <strong>de</strong>l acceso a datos compartidos.<br />
• Sincronización <strong>de</strong> los procesos.<br />
• Maximizar la concurrencia y minimizar costes<br />
<strong>de</strong> comunicación: Mejorar el Speed-up.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Búsqueda <strong>de</strong> elementos <strong>de</strong> trabajo concurrentes<br />
• Descomposición: Proceso <strong>de</strong> división <strong>de</strong>l<br />
trabajo en unida<strong>de</strong>s menores y más manejables<br />
<strong>de</strong>nominadas tareas.<br />
• Las tareas se <strong>de</strong>finen a nivel <strong>de</strong> programación y<br />
• Las tareas se <strong>de</strong>finen a nivel <strong>de</strong> programación y<br />
se consi<strong>de</strong>ran indivisibles.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Multiplicación Matriz <strong>de</strong>nsa - Vector<br />
• Granularidad: Número y tamaño <strong>de</strong> las tareas.<br />
• Granularidad fina: Muchas tareas <strong>de</strong>talladas.<br />
• Granularidad gruesa: Pocas tareas genéricas.<br />
Descomposición en n tareas<br />
Descomposición en 4 tareas
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Proceso <strong>de</strong> búsqueda
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Proceso <strong>de</strong> búsqueda<br />
Dos <strong>de</strong>scomposiciones <strong>de</strong> tareas, con resultados muy diferentes:<br />
(a) Tres etapas <strong>de</strong> proceso, con un grado <strong>de</strong> concurrencia máximo <strong>de</strong><br />
4.<br />
b) Cuatro etapas <strong>de</strong> proceso, con un grado <strong>de</strong> concurrencia máximo<br />
<strong>de</strong> 4.<br />
(a)<br />
(b)
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Grafo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> tareas<br />
• En la mayoría <strong>de</strong> los casos, las tareas tienen<br />
<strong>de</strong>pen<strong>de</strong>ncias. No pue<strong>de</strong>n empezar hasta que no acaben<br />
las pre<strong>de</strong>cesoras.<br />
• Estas <strong>de</strong>pen<strong>de</strong>ncias se representan mediante un grafo<br />
dirigido acíclico, <strong>de</strong>nominado Grafo <strong>de</strong> Depen<strong>de</strong>ncia<br />
<strong>de</strong> Tareas.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Grafo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> tareas<br />
• Grado medio <strong>de</strong> concurrencia: Número medio<br />
<strong>de</strong> tareas que se pue<strong>de</strong>n ejecutar<br />
concurrentemente.<br />
• Camino crítico: El camino más largo que recorre<br />
el grafo, el cual <strong>de</strong>limita el tiempo <strong>de</strong> ejecución<br />
total <strong>de</strong>l algoritmo.<br />
• Tanto el grado <strong>de</strong> concurrencia como el camino<br />
crítico se ven directamente afectados por la<br />
elección <strong>de</strong> la granularidad.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Grafo <strong>de</strong> interacción <strong>de</strong> tareas<br />
• Muestra los patrones <strong>de</strong> interacción <strong>de</strong> las tareas.<br />
• Suele contener al grafo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncias <strong>de</strong> tareas<br />
como un subgrafo propio.<br />
Multiplicación <strong>de</strong> matriz dispersa
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Métodos habituales <strong>de</strong> <strong>de</strong>scomposición<br />
• Descomposición <strong>de</strong> datos.<br />
• Descomposición recursiva.<br />
• Descomposición exploratoria.<br />
• Descomposición especulativa.<br />
• Descomposición híbrida.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición recursiva<br />
• Apropiado para problemas resolubles<br />
con la técnica Divi<strong>de</strong>-y-vencerás.<br />
• Cada uno <strong>de</strong> los subproblemas<br />
generados en el proceso <strong>de</strong> división se<br />
correspon<strong>de</strong> con un proceso.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Quicksort<br />
Cada paso <strong>de</strong> división se<br />
asocia a un proceso.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Cálculo <strong>de</strong>l mínimo<br />
Se pue<strong>de</strong> aplicar la estrategia <strong>de</strong> divi<strong>de</strong>-y-vencerás a problemas<br />
que tradicionalmente no se han resuelto con esta técnica.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición <strong>de</strong> datos<br />
• Apropiado para <strong>algoritmos</strong> que trabajan con<br />
una gran cantidad <strong>de</strong> datos: el problema está<br />
en el volumen.<br />
• Habitualmente se realiza en dos etapas:<br />
– Partición <strong>de</strong> los datos.<br />
– Cambio en la computación para trabajar con múltiples<br />
particiones <strong>de</strong> datos.<br />
• ¿Qué datos hay que dividir en particiones (los <strong>de</strong><br />
entrada, los intermedios): Depen<strong>de</strong> <strong>de</strong>l caso.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Multiplicación <strong>de</strong> matrices<br />
• Partición <strong>de</strong> los datos <strong>de</strong> salida:
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Multiplicación <strong>de</strong> matrices<br />
• Partición <strong>de</strong> los datos intermedios:<br />
Grafo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncias <strong>de</strong> datos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición exploratoria<br />
• Apropiado para <strong>de</strong>scomponer cálculos<br />
basados en la búsqueda <strong>de</strong> un espacio<br />
<strong>de</strong> soluciones.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición exploratoria
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición exploratoria<br />
• Pue<strong>de</strong> resultar en speed-up anómalo:<br />
– Dependiendo <strong>de</strong> dón<strong>de</strong> se encuentre la solución<br />
<strong>de</strong>ntro <strong>de</strong>l espacio, la formulación paralela pue<strong>de</strong><br />
requerir más trabajo que la formulación serie.<br />
Speed-up anómalo <strong>de</strong>bido a <strong>de</strong>scomposición exploratoria
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición especulativa<br />
• Usada para extraer concurrencia en<br />
problemas don<strong>de</strong> el próximo paso es una<br />
acción (entre varias posibles), que sólo se<br />
pue<strong>de</strong> <strong>de</strong>terminar cuando la tarea actual<br />
concluya.<br />
• Esta <strong>de</strong>scomposición asume un cierto<br />
resultado <strong>de</strong> la tarea actual y ejecuta los<br />
pasos posteriores.<br />
– Equivalente a la ejecución especulativa a nivel <strong>de</strong><br />
microprocesador
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplos: Simulación discreta <strong>de</strong> eventos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Descomposición especulativa<br />
• Si la predicción es errónea:<br />
– el trabajo realizado se <strong>de</strong>sperdicia<br />
– pue<strong>de</strong> que haya que <strong>de</strong>shacer los resultados <strong>de</strong> la<br />
tarea (restauración <strong>de</strong> contexto)<br />
• A menudo, pue<strong>de</strong> ser el único medio para<br />
obtener concurrencia.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Asignación <strong>de</strong> tareas<br />
• ¿Por qué una asignación <strong>de</strong> tareas ¿No es<br />
suficiente una asignación aleatoria<br />
• La asignación apropiada es crítica, a fin <strong>de</strong><br />
minimizar el coste asociado al paralelismo.<br />
• Coste = p·T p - T s.<br />
• Causas <strong>de</strong>l coste:<br />
– Carga <strong>de</strong> trabajo no equilibrada.<br />
– Comunicación entre procesos.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Asignación <strong>de</strong> tareas<br />
• Para una correcta asignación hay que<br />
estudiar los grafos <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncia e<br />
interacción <strong>de</strong> tareas:<br />
– ¿Se conocen las tareas a priori<br />
– ¿Y sus requisitos <strong>de</strong> cálculo<br />
– ¿Cuántos datos se asociarán por tarea<br />
– ¿Cómo se comunican las tareas<br />
Depen<strong>de</strong>ncia<br />
<strong>de</strong> datos<br />
Interacción
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplos: Interacción simple y compleja<br />
Interacción simple: Las<br />
tareas se comunican sólo<br />
con las adyacentes<br />
Interacción compleja:<br />
Las tareas necesitan<br />
mucha comunicación
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Objetivo: Equilibrado <strong>de</strong> carga<br />
• El equilibrado <strong>de</strong> carga es fundamental para<br />
maximizar la concurrencia.<br />
• Una asignación equitativa <strong>de</strong> tareas a<br />
procesadores no garantiza el equilibrado <strong>de</strong><br />
carga.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Técnicas <strong>de</strong> equilibrado <strong>de</strong> carga<br />
• Asignación estática:<br />
– Las tareas se distribuyen entre los procesadores antes <strong>de</strong> la<br />
ejecución.<br />
– Aplicable a tareas:<br />
• Generadas estáticamente<br />
• Con requisitos computaciones conocidos<br />
• Asignación dinámica:<br />
– Las tareas se distribuyen entre los procesadores en tiempo <strong>de</strong><br />
ejecución.<br />
– Aplicable a tareas:<br />
• Generadas dinámicamente<br />
• Con requisitos computaciones <strong>de</strong>sconocidos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Técnicas <strong>de</strong> equilibrado <strong>de</strong> carga<br />
• Asignación estática:<br />
– Distribución en array<br />
– Particionamiento <strong>de</strong>l grafo<br />
• Asignación dinámica:<br />
– Patrones centralizados<br />
– Patrones distribuidos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Asignación estática: Distribución en array<br />
• Apropiada para <strong>algoritmos</strong>:<br />
– que usan <strong>de</strong>scomposición <strong>de</strong> datos<br />
– sus datos se almacenan en forma <strong>de</strong> arrays<br />
• Tipos:<br />
– Distribución en bloques<br />
– Distribución cíclica<br />
– Distribución cíclica en bloques<br />
– Distribución aleatoria en bloques
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Distribuciones en bloques<br />
8 procesos<br />
16 procesos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Distribuciones en bloques<br />
Partición<br />
unidimensional<br />
n 2 2<br />
n<br />
p<br />
2<br />
2<br />
n + n<br />
p<br />
n 2<br />
p<br />
n 2<br />
p<br />
Partición<br />
bidimensional<br />
2n 2<br />
p<br />
Los datos <strong>de</strong> las zonas sombreadas A y B son requeridos por el proceso que<br />
calcula la zona sombreada C. La partición unidimensional requiere más acceso a<br />
datos que la bidimensional.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Ejemplo: Distribuciones cíclicas en bloques<br />
• Se usa para evitar problemas <strong>de</strong> <strong>de</strong>sequilibrio <strong>de</strong> carga cuando<br />
distintas partes <strong>de</strong>l array necesitan carga computacional distinta.<br />
•Se divi<strong>de</strong> el array en más bloques que procesadores.<br />
•Cada procesador se encarga <strong>de</strong> varios bloques no contiguos.<br />
Ej.: Eliminación Gausiana.<br />
Distribuciones uni y<br />
bidimensionales sobre 4<br />
procesos
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Distribuciones aleatorias en bloques<br />
• Algunas veces, la computación se realiza únicamente<br />
sobre ciertas partes <strong>de</strong>l array:<br />
– por ejemplo, en la multiplicación <strong>de</strong> matrices dispersas.<br />
El uso <strong>de</strong> distribución<br />
cíclica en bloques llevaría<br />
a un <strong>de</strong>sequilibrio <strong>de</strong><br />
carga
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Distribuciones en bloques aleatorios<br />
Distribución aleatoria<br />
unidimensional<br />
Distribución aleatoria bidimensional: Mejor equilibrado <strong>de</strong> carga.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Particionamiento <strong>de</strong>l grafo<br />
• La asignación <strong>de</strong> procesos se pue<strong>de</strong><br />
conseguir particionando directamente el<br />
grafo <strong>de</strong> interacción <strong>de</strong> tareas.<br />
• Ejemplo: Mo<strong>de</strong>lado basado en cálculos sobre malla.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Particionamiento <strong>de</strong>l grafo<br />
Distribución aleatoria en<br />
8 procesos<br />
Carga equidistribuida<br />
Distribución en 8 procesos<br />
usando un algoritmo <strong>de</strong><br />
particionamiento <strong>de</strong> grafos<br />
Carga equidistribuida<br />
+<br />
Minimización <strong>de</strong> comunicaciones
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Particionamiento <strong>de</strong>l grafo<br />
Otro ejemplo: Multiplicación <strong>de</strong> matriz dispersa<br />
Asignación contigua,<br />
Cada proceso se<br />
ocupa <strong>de</strong> 4 filas<br />
consecutivas<br />
Asignación que minimiza las<br />
comunicaciones y mantiene<br />
las misma carga<br />
computacional por proceso
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Patrones <strong>de</strong> equilibrado dinámico <strong>de</strong> carga<br />
• Tema <strong>de</strong> máxima actualidad a nivel <strong>de</strong><br />
investigación.<br />
• Patrones centralizados:<br />
– Un cierto procesador es responsable <strong>de</strong> repartir el<br />
trabajo.<br />
• Patrones distribuidos:<br />
– El trabajo se pue<strong>de</strong> distribuir entre cualquier par <strong>de</strong><br />
procesadores.
AT5128 – Arquitectura e Ingeniería <strong>de</strong> Computadores II<br />
Juan Antonio Maestro (2004/05)<br />
Asignación para minimizar los costes <strong>de</strong> interacción<br />
• Maximizar ubicación conjunta <strong>de</strong> datos.<br />
• Minimizar volumen <strong>de</strong> intercambio <strong>de</strong> datos.<br />
• Minimizar frecuencia <strong>de</strong> interacción.<br />
• Minimizar contención y hot spots.<br />
• Solapar computación y comunicación.<br />
• Réplica selectiva <strong>de</strong> datos y cálculo.<br />
Estos objetivos se consiguen con una buena<br />
<strong>de</strong>scomposición y asignación <strong>de</strong> tareas.