Análisis de Algoritmos CB-102

Anuncio
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
Descargar