Teo 3 Principios de diseo de Algoritmos paralelos

  • Slides: 49
Download presentation
Teo 3: Principios de diseño de Algoritmos paralelos Glen Rodríguez

Teo 3: Principios de diseño de Algoritmos paralelos Glen Rodríguez

Introducción n n Algoritmos secuenciales: secuencia de pasos. El orden de la ejecución se

Introducción n n Algoritmos secuenciales: secuencia de pasos. El orden de la ejecución se puede conocer de antemano (a menos que haya aleatoriedad en el algoritmo) Algoritmos paralelos: hay el detalle extra de la concurrencia (que pasos se pueden hacer en paralelo) y el no determinismo del orden de ejecución.

Un algoritmo paralelo no trivial necesita: n n n Definir que porciones del algoritmo

Un algoritmo paralelo no trivial necesita: n n n Definir que porciones del algoritmo se pueden hacer en paralelo Mapear esas porciones en los CPUs correspondientes Distribuir la data (input, output y variables intermedias) entre CPUs y/o memorias. Administrar el acceso a la data compartida entre varios CPUs. Sincronizar los procesos cuando convenga.

Qué se puede y qué no se puede paralelizar? n La suma de dos

Qué se puede y qué no se puede paralelizar? n La suma de dos matrices es fácilmente paralelizable + A=B+C n D=A+E Pero se puede paralelizar esto? A=B+C D=A+E

Dependencia de data y de flujo n Relación de bloqueo: write after read ¡

Dependencia de data y de flujo n Relación de bloqueo: write after read ¡ ¡ n n Si i>j, el output de la oper. j es el input de la oper. i Se puede solucionar usando variables auxiliares: ¡ ¡ ¡ n n F=G+D G=H+I AUX=G F=AUX+D G=H+I Dependencia de flujo: if A>B then C=D+E. Primero hay que hacer la comparación antes de tocar C. Si antes alguna operación modificaba A ó B, debe ser antes tocar C. SI NO hay ninguna de estas dependencias, se puede paralelizar “a lo bestia” y funcionará bien. Por que entonces no hay carreras por la data localidad

Descomposición de y=Ab

Descomposición de y=Ab

Ejemplo: descomponer un query n MODEL="Civic" AND YEAR="2001" AND (COLOR="Green" OR COLOR="White")

Ejemplo: descomponer un query n MODEL="Civic" AND YEAR="2001" AND (COLOR="Green" OR COLOR="White")

Grafo de Dependencia 1

Grafo de Dependencia 1

Grafo de dependencia 2

Grafo de dependencia 2

Granularidad n n n Es determinada por el número de tareas (=CPUs trabajando) y

Granularidad n n n Es determinada por el número de tareas (=CPUs trabajando) y el tamaño del problema asignado a cada tarea. Fine-grained (grano fino): muchas tareas, pequeños problemas Coarse-grained (grano grueso): pocas tareas más grandes.

Grado de concurrencia n n Es el máximo número de tareas que corren en

Grado de concurrencia n n Es el máximo número de tareas que corren en paralelo en un algoritmo. Puede ser menor que número de CPUs asignadas, por dependencia de las tareas. Grado promedio de concurrencia: número promedio de tareas en paralelo en un momento dado. Generalmente, grano fino más concurrencia

Conc. promedio= (4*10+2*6+1*11)/27=2. 33 Conc. Promedio=(4*10+6+11+7)/34=1. 88

Conc. promedio= (4*10+2*6+1*11)/27=2. 33 Conc. Promedio=(4*10+6+11+7)/34=1. 88

Ruta crítica y grafo de interacción de tareas n n n Ruta crítica: es

Ruta crítica y grafo de interacción de tareas n n n Ruta crítica: es la más larga ruta entre nodos iniciales y finales del grafo. En el ejemplo anterior (a) 10+9+8=27 (b) 10+6+11+7=34 En el grafo, los nodos representan tareas y las aristas conectan tareas que interactúan unas con otras. Pesos de los nodos: tiempo de cómputo. Pesos de aristas: costo de interacción (ej. : comunicación).

Ejemplo: multiplicación vector x matriz dispersa (sparse) Computar: Solo para los A[i, j] ≠

Ejemplo: multiplicación vector x matriz dispersa (sparse) Computar: Solo para los A[i, j] ≠ 0. Suponer que hay n CPUs y se reparten las filas de A y los valores de b (ej. : CPU 0 es dueña de b[0])

Mapeo n n n Es el mecanismo por el que las tareas se asignan

Mapeo n n n Es el mecanismo por el que las tareas se asignan a los procesos Un proceso: proceso como se entiende en sistemas operativos, o parte de un proceso (hilo) Generalmente 1 proceso 1 CPU/ core

Ejemplo

Ejemplo

Técnicas de descomposición n Más conocidas: ¡ ¡ n Descomposición Recursiva Descomposición de datos

Técnicas de descomposición n Más conocidas: ¡ ¡ n Descomposición Recursiva Descomposición de datos Descomposición Exploratoria Descomposición Especulativa Las 2 primeras son más generales.

D. Recursiva n n Divide y vencerás, en forma recursiva Ej. quicksort

D. Recursiva n n Divide y vencerás, en forma recursiva Ej. quicksort

Ej: hallar mínimo número de un array A de n elementos Serial o secuencial:

Ej: hallar mínimo número de un array A de n elementos Serial o secuencial: n 1. procedure SERIAL_MIN (A, n) n 2. begin n 3. min = A[0]; n 4. for i : = 1 to n - 1 do n 5. if (A[i] < min) min : = A[i]; n 6. endfor; n 7. return min; n 8. end SERIAL_MIN

Reformado : divide y venceras Ej: A={4, 9, 1, 7, 8, 11, 2, 12}

Reformado : divide y venceras Ej: A={4, 9, 1, 7, 8, 11, 2, 12}

Cambiado a recursivo 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

Cambiado a recursivo 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. procedure RECURSIVE_MIN (A, n) begin A un CPU if (n = 1) then min : = A[0]; else lmin : = RECURSIVE_MIN (A, n/2); rmin : = RECURSIVE_MIN (&(A[n/2]), n - n/2); if (lmin < rmin) then min : = lmin; A otro CPU else min : = rmin; endelse; return min; end RECURSIVE_MIN

D. De datos n n n Primero se particiona la data Luego se usa

D. De datos n n n Primero se particiona la data Luego se usa esa partición de la data para inducir la partición de las computaciones en tareas. Lo ideal sería que ambas particiones sean parejas en tamaño (cada proceso / CPU / core con data parecidas en tamaño y tareas parecidas en tiempo de cómputo)

Ej: multiplicación de matrices Parta cada factor en 4 submatrices. El resultado también. Cada

Ej: multiplicación de matrices Parta cada factor en 4 submatrices. El resultado también. Cada submatriz del resultado se puede calcular por separado. Y que pasa si tengo 8 CPUs?

Ej: calcular frecuencias de itemsets en una tabla

Ej: calcular frecuencias de itemsets en una tabla

Particionando data intermedia

Particionando data intermedia

D. exploratoria n n n Se usan en problemas de búsqueda (ej. : en

D. exploratoria n n n Se usan en problemas de búsqueda (ej. : en árboles) Se parte el espacio de búsquedas en subespacios más pequeños. Ej: puzzle de 15 cuadrados

D. especulativa n Cuando en un algoritmo hay ramas que dependen de un IF

D. especulativa n Cuando en un algoritmo hay ramas que dependen de un IF (si es verdadero se hace una operación, si es falso se hace otra), se puede paralelizar ambas tareas ANTES de poder evaluar el IF, ejecutando ambas operaciones y esperar al IF para eliminar una y mantener la otra.

Ejemplo 1. 2. x=valores. Propios(matriz A) IF max(x)<1 B=C+D 3. ELSE B=X-Y

Ejemplo 1. 2. x=valores. Propios(matriz A) IF max(x)<1 B=C+D 3. ELSE B=X-Y

Tareas n Características de las tareas: ¡ ¡ Generación: estática o dinámica Tamaño: uniforme

Tareas n Características de las tareas: ¡ ¡ Generación: estática o dinámica Tamaño: uniforme o no uniforme Conocimiento del tamaño: se puede conocer de antemano o no? Tamaño de la data asociada a las tareas

Interacciones entre tareas n Características: ¡ ¡ Estáticas vs Dinámicas Regular vs Irregular Read-only

Interacciones entre tareas n Características: ¡ ¡ Estáticas vs Dinámicas Regular vs Irregular Read-only vs. Read-Write 1 -way vs 2 -way. Todas las read only son 1 -way, pero las read-write pueden ser de cualquier tipo.

Ej. Regular: gradiente de una imagen para ver “bordes”

Ej. Regular: gradiente de una imagen para ver “bordes”

Mapeo para balance de carga n Dos objetivos ¡ ¡ n n Reducir tiempo

Mapeo para balance de carga n Dos objetivos ¡ ¡ n n Reducir tiempo de interacción entre procesos Reducir el tiempo ocioso de los procesos Mutuamente excluyentes Mapeo estático vs dinámico

Esquemas de mapeo estático n Mapeos basados en la partición de data para arrays:

Esquemas de mapeo estático n Mapeos basados en la partición de data para arrays: ¡ ¡ Bloques 1 -D, 2 -D, 3 -D Ciclicos Aleatorios en bloque Basados en grafos:

Bloques

Bloques

Cíclicos

Cíclicos

Grafo de un lago, mapeo en 8 procesos

Grafo de un lago, mapeo en 8 procesos

Mapeos basados en dependencia de tareas

Mapeos basados en dependencia de tareas

Mapeo dinámico n n Centralizado: un master reparte las tareas a los procesos según

Mapeo dinámico n n Centralizado: un master reparte las tareas a los procesos según su criterio. Tareas de una en una, o en chunks (“pedazos”) Distribuido: un proceso puede enviar o recibir las tareas de otro. Si P 3 tiene mucha carga, delega algunas tareas a P 7 que esta libre.

Localidad n n Grado en el que la data que reside en memoria de

Localidad n n Grado en el que la data que reside en memoria de un CPU basta para el trabajo de esa CPU. Mientras más tenga que usar data “ajena”, menos localidad hay. En otros ramos de Computer Science tiene otros significados

Paralelismo y Localidad en Simulación n Problemas físicos tienen paralelismo y localidad: ¡ ¡

Paralelismo y Localidad en Simulación n Problemas físicos tienen paralelismo y localidad: ¡ ¡ ¡ n Algunos modelos científicos pueden crear paralelismo: ¡ ¡ n Muchos objetos operan independientemente unos de otros. Los objetos generalmente dependen más de otros objetos cercanos que de los lejanos. Dependencia en objetos lejanos se puede simplificar. Cuando un problema continuo se discretiza, la dependencia en el tiempo se limita a time steps cercanos. Efectos lejanos se pueden ignorar o aproximar. Puede haber paralelismo en varios niveles ¡ Ej. : varios circuitos se pueden simular a diferentes niveles, desde el de todo un aparato, hasta los componentes básicos individuales.

Algunas clases básicas de simulación n Sistemas de eventos discretos: ¡ n Sistemas de

Algunas clases básicas de simulación n Sistemas de eventos discretos: ¡ n Sistemas de partículas: ¡ n EDOs, ej: simulación de circuitos (Spice), estructuras mecánicas, cinética química. Variables continuas que dependen de param. continuos: ¡ n Ejs: bolas de billar, dispositivos semiconductores, galaxias. Variables agregadas que dependen de param. continuos: ¡ n Ejs: “Game of Life, ” circuitos lógicos. EDPs, ej: calor, elasticidad, electrostática. Muchas simulaciones combinan varias técnicas.

Resumen n Eventos discretos ¡ n Caso especial de sistema agregado Ec. Diferenciales ordinarias

Resumen n Eventos discretos ¡ n Caso especial de sistema agregado Ec. Diferenciales ordinarias (EDOs) ¡ ¡ n Tiempo y espacio discretos Partículas ¡ n discreto Sistemas agregados Entidades o posiciones discretas, tiempo continuo Ec. Diferenciales parciales (EDPs) ¡ Tiempo y espacio es continuo n Identificar problemas comunes y sus soluciones

Maximizando localidad de data n n Minimizar el volumen de intercambio de data. Ej.

Maximizando localidad de data n n Minimizar el volumen de intercambio de data. Ej. : gradiente, partir en 4 procesos como cuatro cuadrados pequeños vs 4 tiras largas Minimizar la frecuencia de interacciones. Ej. : multiplicacion vector matriz dispersa, con núm. CPUs << núm. de filas

Minimizar congestión y hot spots n n Si 2 o más procesos quieren usar

Minimizar congestión y hot spots n n Si 2 o más procesos quieren usar la misma data a la vez, donde por lo menos 1 de ellos quiere escribir: contención. Mientras ese lea+escriba, los otros no deberían correr. Cambiar el patrón de acceso (orden de las operaciones)

Que coincidan computaciones e interacciones n n Ej: mientras P 0, P 1 computan,

Que coincidan computaciones e interacciones n n Ej: mientras P 0, P 1 computan, P 2 lee y/o escribe la variable x. Luego le tocara a P 0. Otro ej. : usar comunicación asíncrona

Modelos de algoritmos paralelos n n n Modelo data-parallel: ej. sumatoria Modelo gráfico de

Modelos de algoritmos paralelos n n n Modelo data-parallel: ej. sumatoria Modelo gráfico de tareas: ej. Multp. Vector matriz dispersa Modelo de pool de tareas: mapeo dinámico de un loop es muchos sub-loops Modelo master-slave. Ej: montecarlo maestro esclavo Modelo pipeline o productor-consumidor Híbridos