Análisis de Algoritmos CB-102 Algoritmos en Paralelo Centro de Manufactura / Centro de Sistema Inteligentes ITESM Algoritmos en Paralelo TC-4001 - p. 1/22 Paralelismo ■ ■ Hasta este punto, nuestro modelo de computación ha sido el de una computadora de propósito general, determinística, acceso a memoria aleatorio, que realiza una sola operación a la vez. Usaremos el término algoritmo secuencial para los algoritmos de un paso a la vez que hemos estudiado hasta ahora. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 2/22 ■ ■ Hay situaciones donde algunos cálculos de una tarea son relativamente independientes entre si; dichos cálculos podrían realizarse simultáneamente, es decir, en paralelo. El propósito de este capítulo es introducir algunos de los conceptos, modelos formales, y técnicas para el análisis de algoritmos donde es posible ejecutar varias operaciones en paralelo, es decir, algoritmos para máquinas que tienen más de un procesador trabajando en un mismo problema a la vez. Algoritmos Paralelos Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 3/22 ■ ■ Los algoritmos paralelos son naturales en muchas aplicaciones: ◆ Procesamiento de imágenes ◆ Sistema de búsqueda ◆ Evaluaciones de soluciones factibles en problemas de optimización Al disminuir el precio de los microprocesadores y al mejorar la tecnología para interconectarlos se ha vuelto posible y práctico construir computadoras con un gran número de procesadores. Para ver la tendencia del paralelismo en las supercomputadoras actuales visitar el sitio: ◆ http://www.top500.org/ Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 4/22 Modelo utópico: PRAM ■ ■ ■ ■ ■ ■ ■ Parallel Random Access Machine p procesadores P1 , P1 ,. . . , Pp , conectados a una memoria compartida M. Cada procesador tiene una memoria local. Toda la comunicación entre los procesadores se lleva a cabo vía la memoria compartida. El input se encuentra en las primeras n celdas de la memoria. El output se escribe apartir de la primera celda. Todas las celdas de memoria sin input tienen un 0. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 5/22 ■ ■ ■ ■ Cada paso tiene tres fases: 1. Lectura 2. Cálculo 3. Escritura Todos los procesadores ejecutan el mismo programa y saben cual es su índice (identificador de procesador o pid). Procesadores PRAM están sincronizados: Empiezan cada paso al mismo tiempo; y todos los que tiene que escribir lo hacen al mismo tiempo. Los procesadores pueden leer la misma posición de memoria concurrentemente. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 6/22 Conflictos de Escritura: Modelos ■ ■ ■ CREW (Concurrent Read, Exclusive Write): Sólo un procesador puede escribir en una celda particular en un paso dado. CRCW (Concurrent Read, Common Write): Varios procesadores pueden escribir en una celda particular en un paso dado, siempre y cuando escriban el mismo valor. CRPW (Concurrent Read, Priority Write): Si varios procesadores tratan de escribir en una celda al mismo tiempo, gana el de menor índice. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 7/22 Complejidad La Clase de Nick (Nicholas Pippenger): N C Clase de problemas que pueden ser resueltos por un algoritmo en paralelo donde el número de procesadores p está acotado por un polinomio en el tamaño del input y el número de pasos F está acotado por un polinomio en el logaritmo del tamaño del input. p(n) ∈ O(nk ) Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III F (n) ∈ O((log (n))m ) Algoritmos en Paralelo TC-4001 - p. 8/22 Medidas ■ ■ ■ T (n): tiempo requerido por el mejor algoritmo secuencial conocido Tp (n): tiempo que toma un algoritmo paralelo usando p procesadores Sp : speed-up ratio con respecto al mejor algoritmo secuencial: Tp (n) Sp = T (n) ■ Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III Ep : Eficiencia Sp Ep = p Algoritmos en Paralelo TC-4001 - p. 9/22 Comentarios Ley de Amdahl (versión texto interpretada): Finalmente, es el algoritmo el que decide el factor de aceleración y no el número de procesadores. El problema de ponerse los zapatos: Si tuviera 4 brazos podría reducirse el tiempo a la mitad poniendo dos brazos a cada zapato; pero teniendo mas de 4 brazos no disminuye el tiempo. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 10/22 Obtención del máximo de un arreglo ■ ■ ■ Idea: Torneo en paralelo. Forma de ejecución: Competir por pares: eliminatoria hasta llegar a las finales donde se elige al ganador. Tiempo de ejecución ⌈log2 (n)⌉ competencias en paralelo Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 11/22 Código para cada procesador: Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III torneoMaxParalelo(M,n) 1. read M [pid] into big; 2. incr = 1; 3. write −∞ into M [n + pid]; 4. for step = 1 to ⌈log n⌉ 5. read M [pid + incr] into temp; 6. big = max(big, temp); 7. incr = 2 ∗ incr ; 8. write big into M [pid]; 9. end Este algoritmo emplea CREW de manera que no hay conflictos de escritura. Algoritmos en Paralelo TC-4001 - p. 12/22 Afirmación: Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III Al término de la iteración t en el ciclo del for: ■ incr = 2t ■ Para cualquier 0 ≤ pid < 2⌈n⌉ : M [pid] contiene el máximo de los contenidos iniciales de M [pid], M [pid + 1], . . . , M [pid + incr − 1] Por tanto, para t = ⌈log n⌉ y para pid = 0 se tendría que M [0] contendría el máximo de los contenidos iniciales de M [0], M [1], . . . , M [n − 1] Por tanto: El problema de encontrar el máximo de n números está en N C. Algoritmos en Paralelo TC-4001 - p. 13/22 Tarea (Parte I) Modifique el algoritmo previo para ■ encontrar el mínimo de n números ■ calcular el or y and de n bits ■ calcular la suma de n números Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 14/22 Multiplicación de Matrices Consideremos el problema de multiplicación de dos matrices A y B (n × n). Recordemos que si C = AB entonces cij = n X aik bkj k=1 Idea del algoritmo: Asignar un procesador a cada elemento del producto, usando n2 procesadores. Cada procesador Pij calcula su cij en 2n pasos (n productos y n − 1 sumas). Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 15/22 Tarea (Parte II) Note que el algoritmo anterior para el cálculo del producto de matrices no prueba que el problema está en la clase de Nick: 2 n (tiempo de ejecución) no es poli-log en 2 n2 (tamaño de la entrada). Para probar que efectivamente está en N C, habrá que proveer de otro algoritmo que aunque quizá use más procesadores reduzca el tiempo de ejecución. Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III Tarea Indique un algoritmo para hacer el cálculo de dos matrices n × n que use Θ(n3 ) procesadores y que ejecute en tiempo O(log(n)). Algoritmos en Paralelo TC-4001 - p. 16/22 Potenciando el Manejo de Escritura Utilizando el esquema anterior (Abanico de Entrada Binario) el problema se resuelve en tiempo Θ(log n). Este método funciona en todos los modelos por que no hay conflicto de escritura. Pero puede rerolverse más rápido con otro esquema de manejo de conflictos de escritura: Or booleano de n bits en tiempo constante. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 17/22 Potenciando el Manejo de Escritura Utilizando el esquema anterior (Abanico de Entrada Binario) el problema se resuelve en tiempo Θ(log n). Este método funciona en todos los modelos por que no hay conflicto de escritura. Pero puede rerolverse más rápido con otro esquema de manejo de conflictos de escritura: Or booleano de n bits en tiempo constante. Input: Bits x1, x2, . . . , xn, en M[1], Output x1 ∨ x2 ∨ . . . xn en M[1] M[2],. . . , M[n] Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III OrConsEscrituraComun(M,n) 1. Pi lee xi en M[i]; 2. Si xi = 1, entonces Pi escribe 1 en M[1]. 3. end; Algoritmos en Paralelo TC-4001 - p. 17/22 Un algoritmo rápido para encontrar Max ■ ■ ■ Utilizando CRCW o CRPW podemos acelerar el tiempo de cálculo del máximo de un arreglo (Max), aumentando el número de procesadores. Se usan n(n − 1) procesadores. Estrategia: comparar todos los pares de valores en paralelo, y comunicar los resultados vía la memoria compartida: Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 18/22 Un algoritmo rápido para encontrar Max ■ ■ ■ Utilizando CRCW o CRPW podemos acelerar el tiempo de cálculo del máximo de un arreglo (Max), aumentando el número de procesadores. Se usan n(n − 1) procesadores. Estrategia: comparar todos los pares de valores en paralelo, y comunicar los resultados vía la memoria compartida: Se usa un arreglo loser que ocupa las celdas de memoria M[n+1],. . . .,M[2n]. Inicialmente todas las celdas de este arreglo tienen el valor 0. Si xi pierde una comparación, entonces loser[i] recibe un 1. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 18/22 MaxCW1(M, n) 1. i = ⌊pid/n⌋; 2. Escribe un 0 en loser[i]; MaxCW2(M, n) 1. i = ⌊pid/n⌋; j = pid − n · i; 2. Si i ≥ j, el procesador no ejecuta trabajo; 3. xi ← M [i]; 4. xj ← M [j]; 5. k ← i; 6. Si xj > xi, entonces k ← j; 7. Escribe 1 en loser[k]; Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III MaxCW3(M,n) 1. i = ⌊pid/n⌋; 2. Si loser[i] = 0, entonces escribe M [i] en M [0]; Algoritmos en Paralelo TC-4001 - p. 19/22 Mezcla de listas en paralelo ■ ■ ■ Dos listas ◆ X = (x1 , x2 , . . . , xn/2 ) ◆ Y = (y1 , y2 , . . . , yn/2 ) n procesadores: Cada procesador se asigna a un elemento de la lista, su misión es localizar la posición de ese elemento en la lista mezclada. Un procesador asociado con el elemento xi en X, realiza una búsqueda binaria en la lista Y y localiza la menor j tal que xi < yj . Con esto se determina que: xi es mayor que i − 1 elementos en X y mayor que j − 1 elementos en Y su posición en la lista mezclada es i + j − 1. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 20/22 Input: lista de n elementos en M [1], . . . , M [n] Output: los n elementos ordenados en orden nodecreciente en M [1], . . . , M [n] Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III 1. for i = 1 to ⌈log n⌉ do 2. k = 2i − 1; 3. Pi , . . . , Pi+2k−1 mezclan las dos listas ordenadas de tamaño k empezando en M [i]; 4. end Algoritmos en Paralelo TC-4001 - p. 21/22 Tarea Parte III ■ ■ ■ Escriba un algoritmo para PRAM con modelo CREW que calcule la suma de n números enteros en tiempo O(log n). Modifique el programa de or booleano para calcular el and booleano de n bits en tiempo constante. Indique un algoritmo que determine el producto booleano de dos matrices booleanas n × n en tiempo constante en una PRAM con modelo CRCW. Algoritmos en Paralelo Paralelismo PRAM Conflictos de Escritura Complejidad Medidas Comentarios Ejemplo 1 Tarea parte I Ejemplo 2 Tarea parte II Or Booleano Max Mezcla de listas Tarea Parte III TC-4001 - p. 22/22