La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Algoritmos de Ordenación Paralelos

Presentaciones similares


Presentación del tema: "Algoritmos de Ordenación Paralelos"— Transcripción de la presentación:

1 Algoritmos de Ordenación Paralelos
Autor: Miguel Angel Botella Tomey

2 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

3 Introducción Tipos de algoritmos de ordenación:
No basados en las operaciones comparación-intercambio. Complejidad mayor que los basados en operaciones comparación-intercambio. Sistemas de memoria compartida. Ejemplo: Rank Sort. Basados en operaciones comparación-intercambio. Complejidad menor que los no basados en operaciones comparación-intercambio. Sistemas de memoria distribuida. Divide y vencerás. Ejemplos: Bubble Sort, Mergesort, Quicksort.

4 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

5 Rank Sort (I) Para el elemento actual se cuentan el número de elementos menores que él. Ese número (rank) será la posición que ocupe. Acceso compartido a una lista de elementos sistemas de memoria compartida. También en memoria distribuida

6 Rank Sort (II) Algoritmo Secuencial
Para comparar un elemento con el resto se necesitan (n-1) pasos; para compararlos todos serían n(n-1) pasos. Complejidad: O(n2).

7 Rank Sort (III) Algoritmo paralelo usando n procesadores
Tenemos un procesador para calcular el orden de cada elemento y un contador por cada elemento. Todos hacen en paralelo (n-1) pasos. Complejidad: O(n).

8 Rank Sort (IV) Algoritmo paralelo usando n2 procesadores
Se usan (n-1) procesadores para calcular la posición del elemento y un contador para cada elemento. Incremento del contador en paralelo: O(1). Incremento del contador secuencialmente. 1 paso para la iniciar el contador. 1 paso de la comparación en paralelo. (n-1) pasos para incrementar. Requiere como máximo (n+1) pasos. Complejidad: O(n)

9 Rank Sort (y V) Usando estructura de árbol se puede reducir el tiempo.
Complejidad: O(logn)

10 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

11 Algortimos comparación-intercambio (I)
Dos elementos A y B son comparados. Si A>B (A<B), A y B son intercambiados entre sus respectivas zonas. En otro caso, no se intercambian. Dos mecanismos para comparación-intercambio: Un solo procesador realiza la comparación: P1 envía su elemento a P2 y este lo compara con el suyo. El elemento mayor (menor) será devuelto a P1, mientras que el elemento menor (mayor) se lo quedará P2. Ambos procesadores realizan la comparación: P1 envía su elemento a P2 y este hace lo mismo hacia P1 con el suyo. Los dos procesadores realizan la comparación y P1 se quedará con el elemento mayor (menor), mientras que P2 guardará el menor (mayor). Indicados para sistemas de memoria distribuida.

12 Algortimos comparación-intercambio (II)
Un solo procesador realiza la comparación Pseudo código Procesador P1 send (&A,P2); recv (&A,P2); Procesador P2 recv (&A,P1); if (A > B) { send (&B,P1); B = A; } else send (&A,P1);

13 Algortimos comparación-intercambio (III)
Ambos procesadores realizan la comparación Pseudo código Procesador P1 send (&A,P2); recv (&B,P2); If (A > B) A = B; Procesador P2 recv (&A,P1); send (&B,P1); if (A > B) B = A;

14 Algortimos comparación-intercambio (y IV)

15 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

16 Bubble sort (I) Los elementos mayores se van moviendo hacia el final de la lista en cada fase. F A S E 1 4 2 7 8 5 3 6 ...

17 Bubble sort (II) Algoritmo secuencial
Suponiendo que una operación comp-interc tiene complejidad O(1) Fase 1: (n-1) comp-interc Fase 2: (n-2) comp-interc .... Total comparaciones-intercambios n(n-1)/2 Complejidad: O(n2) for (i = n-1; i > 0; i--) for (j = 0; j < i; j++) { k = j + 1; if (a[j] > a[k]) { temp = a[j]; a[j] = a[k]; a[k] = temp; }

18 Bubble sort (III) Algoritmo paralelo (Odd-Even Transposition Sort)
Bubble sort es inherentemente secuencial ya que una iteración no puede empezar hasta que la anterior finalice. Modificación: se introduce una estructura de pipeline. Dos pasos: Fase Par (Even): los elementos en posiciones pares se comparan con los de su derecha. Fase Impar (Odd): los elementos en posiciones impares se comparan con los de su derecha. Complejidad: Con n=p tenemos O(n) comparaciones-intercambios. Con n>p tenemos O(n/p) comparaciones-intercambios.

19 Bubble sort (y IV) F P0 P1 P2 P3 P4 P5 P6 P7 4 2 7 8 5 1 3 6 0p 1i 2p

20 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

21 Shearsort (I) ¿Qué ocurre si la secuencia de elementos está lógicamente dispuesta sobre una tabla? Más pequeño Secuencia “snakelike” Más grande

22 Shearsort (II) Algoritmo secuencial Fases pares (2,4,6,...)
Cada columna se ordena de menor a mayor independientemente. Fases impares (1,3,5,...) Filas pares: se ordenan de mayor a menor. Filas impares: se ordenan de menor a mayor. Complejidad para n elementos y una tabla de  n x  n: O( n(logn+1))

23 Shearsort (III) Fila 1 4 14 8 2 7 3 10 13 16 5 6 15 12 11 9 Inicio
Fase 1 Fase 2 Fase 3 Fase 4 Fase 5 - Fin

24 Shearsort (IV) Algoritmo paralelo
Teniendo un procesador por fila podemos paralelizar las fases impares. Usando transposición entre fases podemos paralelizar también las fases pares. Fase Impar Transposición Fase Par

25 Shearsort (V) Fila 1 4 14 8 2 16 12 10 3 13 5 11 7 15 9 6 Inicio
Fase 1 Transposición Fase 2 Fase 3

26 Shearsort (y VI) Complejidad Fila 1 8 9 16 3 4 2 6 11 15 5 7 12 13 10
14 Transposición Fase 4 Complejidad En cada iteración, cada procesador ordena su fila en O( nlog  n) pasos. Cada transposición necesita  n( n-1) comunicaciones: O(n). Fase 5 - Fin

27 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

28 Mergesort (I) Algoritmo divide y vencerás.
División de un problema en otros de menor complejidad. Objetivo: hacer la división y combinación de los subproblemas de forma eficiente. Características: Cálculo de la solución de los subproblemas en paralelo. Combinación de los subproblemas en paralelo. Posible sincronización entre subproblemas. Normalmente es el esquema más apropiado para paralelizar (innato en los problemas paralelos).

29 Mergesort (II) Algoritmo secuencial Fase de división: Fase de mezcla:
La lista ordenada de divide por la mitad. Cada mitad se vuelve a dividir por la mitad. Así hasta que queden listas de un solo elemento. Fase de mezcla: Se mezclan pares de listas de un solo elemento. Las nuevas listas obtenidas se vuelven a mezclar en pares. Así hasta obtener una sola lista mezclada y ordenada. Complejidad: O(nlogn).

30 Mergesort (III) 4 2 7 8 5 1 3 6

31 Mergesort (IV) P0 P0 P4 P0 P2 P4 P6 P0 P1 P2 P3 P4 P5 P6 P7 P0 P2 P4
Algoritmo paralelo simple (n procesadores) P0 P0 P4 P0 P2 P4 P6 P0 P1 P2 P3 P4 P5 P6 P7 P0 P2 P4 P6 P4 P0 P0

32 Mergesort (V) Análisis algortimo paralelo simple
Comunicaciones tstartup+(n/2)tdata P0 P4 tstartup+(n/4)tdata P0 P2;P4 P6 tstartup+(n/8)tdata P0 P1;P2 P3;P4 P5;P6 P7 tcomm=2(tstartup+(n/2)tdata+tstartup+(n/4)tdata + tstartup+(n/8)tdata+...) = 2 ((logp)tstartup+ntdata ) Computación (mezcla) tcomp=1 P0;P2;P4;P6 tcomp=3 P0;P4 tcomp=7 P0 tcomp= (2i-1) (desde i=1 hasta logp) Complejidad: para n=p se tiene O(p); para n>p se tiene O(n/p).

33 Mergesort (VI) Algoritmo Odd-Even Mergesort
Dadas dos listas ordenadas: L1 = {a1,a2,a3,...} y L2 = {b1,b2,b3,...} Mezcla estas dos listas en una sola siguiendo estas reglas: Los elementos con índice impar (odd) son mezclados en una lista L3 (ci). Los elementos con índice par (even) son mezclados en otra lista L4 (di). La lista L5 final ordenada se obtiene asi: e1=c1 e2i = min {ci+1,di} e2i+1 = max {ci+1,di} Uso de un hipercubo para una mayor eficiencia. Complejidad para n procesadores: O(log2n)

34 Mergesort (VII) L1 L2 1 3 4 7 2 5 6 8 a1 a2 a3 a4 b1 b2 b3 b4 L3 L4 c1
d1 d2 d3 d4 L5 e1 e2 e3 e4 e5 e6 e7 e8

35 Mergesort (VIII) Algoritmo Bitonic Mergesort Secuencia bitónica:
secuencia de elementos a0,a1,a2,...,an que se incremente monótamente y cuando llega a un máximo se decrementa monótamente. secuencia de elementos a0,a1,a2,...,an que si desplazamos cíclicamente se sigue cumpliendo el anterior punto.

36 Mergesort (IX) Mezcla bitónica:
Si realizamos las operaciones comparación-intercambio con los elementos ai y ai+(n/2) obtenemos dos secuencias bitónicas, teniendo una de ellas los elementos menores y la otra los elementos mayores. 3 5 8 9 7 4 2 1 6

37 Mergesort (X) Como proceder (para 8 elementos) en caso de que la secuencia de elementos no sea bitónica: Fase 1: Convertir cada par de elementos adyacentes en una secuencia incremental y la siguiente decremental. Fase 2: Dividir secuencias bitónicas de 4 elementos en secuencias bitónicas de 2 elementos. Ordenar cada secuencia de 4 elementos (incrementando o decrementando) y mezclar con mezcla bitonic en una secuencia de 8 elementos. Fase 3: Ordenar la secuencia de 8 elementos con mezcla bitónica. Complejidad: O(log2n) para n procesadores.

38 Mergesort (y XI) 8 3 4 7 9 2 1 5 Fase 1 n=2 ai con ai+1 Fase 2

39 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

40 Quicksort (I) Algoritmo divide y vencerás. Algoritmo secuencial Pasos:
Selección de un pivote inicial que divida la lista de elementos. Todos los elementos menores que el pivote irán a una lista, y los demás a la otra lista. Para cada una de las sublistas se elije de nuevo otro pivote y se repite el proceso de división. La división finalizará cuando todas las sublistas estén ordenadas. Interesante elegir un buen pivote (balanceo de sublistas). Complejidad O(nlogn).

41 Quicksort (II) 4 2 7 8 5 1 3 6 El proceso “vencerás” se dará cuando vayan terminando las llamadas recursivas.

42 Quicksort (III) P0 P4 P0 P0 P4 P6 P2 P0 P1 P7 P6
Algoritmo paralelo simple (n procesadores) P0 P4 P0 P0 P4 P6 P2 P0 P1 P7 P6

43 Quicksort (V) Análisis algortimo paralelo simple (suponemos un pivote ideal) Comunicaciones tstartup+(n/2)tdata tstartup+(n/4)tdata tstartup+(n/8)tdata ... tcomm= (tstartup+(n/2)tdata+tstartup+(n/4)tdata + tstartup+(n/8)tdata+...) = (logp)tstartup+ntdata Computación tcomp= n + n/2 + n/4 + n/8+ = ... = 2n Complejidad: Mejor situación: O(2n). Peor situación: O(n2); elección del primer elemento de una sublista.

44 Quicksort (VI) Algoritmo paralelo en un Hipercubo Algoritmo simple puede ser ¡¡¡ menos eficiente que el secuencial !!! ¿Cómo dividir un hipercubo? Dado un hipercubo d-dimensional, se divide en dos hipercubos (d-1)-dimensionales. Ejemplo: Hipercubo tri-dimensional. 100 110 000 001 100 101 000 010 100 110 000 010 101 111 001 011 101 111 010 011 110 111 001 011

45 Quicksort (VII) Pasos (supongamos un hipercubo lógico de procesadores): Un procesador elige un pivote y lo envía por broadcast al resto. Se divide la lista de elementos con el pivote. Cada procesador con su dimensión a 0 envían los elementos mayores al pivote a su procesador adyacente con su dimensión a 1. Al revés ocurre igual, excepto por se envía los elementos menores al pivote. Cada procesador une lo que queda de su lista con la recibida. Estos 2 últimos pasos se repiten recursivamente (logd) veces. Finalmente, cada sublista es ordenada secuencialmente en cada procesador. Importante: elección de un buen pivote. Variación: hyperquicksort Paso inicial de ordenamiento: elimina el último paso anterior y facilita la elección del pivote.

46 Quicksort (VIII)

47 Quicksort (y IX) Análisis: Computación Comunicación Complejidad Total
Selección del pivote: O(1). Particionar en paralelo ‘x’ elementos a enviar (para elementos ordenados): O(logx). Mezcla de los datos (la sublista mayor tiene ‘x’ elementos): O(x). tcomp = O(1) + O(logx) + O(x) Comunicación Broadcast del pivote: d(d-1)/2(tstartup+tdata) Datos recibidos (‘x’ elementos) de la partición: tstartup+(x/2)tdata. tcomm = d(d-1)/2(tstartup+tdata) + tstartup+(x/2)tdata Complejidad Total tcomp + tcomm El broadcast del pivote lo más costoso: usar mecanismo eficientes.

48 Índice Introducción Rank Sort Algoritmos de comparación-intercambio
Bubble Sort Shearsort Mergesort Simple Odd-Even Bitonic Quicksort Hypercube Bibliografía

49 Bibliografía Kumar, Grama, Gupta, Karypis: Introduction to Parallel Computing. Design and Analysis of Algorithms. The Benjamin Cumming Publishing Company Segunda edición. Barry Wilkinson, Michael Allen: Parallel programming. Prentice-Hall


Descargar ppt "Algoritmos de Ordenación Paralelos"

Presentaciones similares


Anuncios Google