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

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

Transcript of Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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

Algoritmos de OrdenaciónParalelos

Autor:Miguel Angel Botella Tomey

Page 2: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

2

Índice

IntroducciónIntroducción Rank Sort Algoritmos de comparación-intercambio Bubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 3: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 4: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

4

Índice

Introducción Rank SortRank Sort Algoritmos de comparación-intercambio Bubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 5: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

5

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

Rank Sort (I)

Page 6: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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).

Page 7: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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).

Page 8: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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)

Page 9: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

9

Rank Sort (y V)

– Usando estructura de árbol se puede reducir el tiempo.

Complejidad: O(logn)

Page 10: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

10

Índice

Introducción Rank Sort Algoritmos de comparación-intercambioAlgoritmos de comparación-intercambio Bubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 11: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 12: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

12

Algortimos comparación-intercambio (II)

Pseudo código

Procesador P1send (&A,P2);recv (&A,P2);

Procesador P2recv (&A,P1);if (A > B) { send (&B,P1); B = A;} else send (&A,P1);

Un solo procesador realiza la comparación

Page 13: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

13

Algortimos comparación-intercambio (III)

Ambos procesadores realizan la comparación

Pseudo código

Procesador P1send (&A,P2);recv (&B,P2);If (A > B) A = B;

Procesador P2recv (&A,P1);send (&B,P1);if (A > B) B = A;

Page 14: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

14

Algortimos comparación-intercambio (y IV)

Page 15: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

15

Índice

Introducción Rank Sort Algoritmos de comparación-intercambio Bubble SortBubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 16: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

16

Bubble sort (I)

Los elementos mayores se van moviendo hacia el final de la lista en cada fase.

F

A

S

E

1

44 22 77 88 55 11 33 66

4 2 7 8 5 1 3 6

2 4 7 8 5 1 3 6

2 4 7 8 5 1 3 6

2 4 7 8 5 1 3 6

2 4 7 5 8 1 3 6

2 4 7 5 1 8 3 6

2 4 7 5 1 3 8 6

F

A

S

E

2

...

2 4 7 5 1 3 6 8

2 4 7 5 1 3 6 8

2 4 7 5 1 3 6 8

2 4 5 7 1 3 6 8

2 4 5 1 7 3 6 8

Page 17: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

17

Bubble sort (II)

Algoritmo secuencial

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;

}

}

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)

Page 18: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 19: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

19

Bubble sort (y IV)

F P0 P1 P2 P3 P4 P5 P6 P7

4 2 7 8 5 1 3 6

0p 4 2 7 8 5 1 3 6

1i 2 4 7 8 1 5 3 6

2p 2 4 7 1 8 3 5 6

3i 2 4 1 7 3 8 5 6

4p 2 1 4 3 7 5 8 6

5i 1 2 3 4 5 7 6 8

6p 1 2 3 4 5 6 7 8

7i 1 2 3 4 5 6 7 8

Page 20: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

20

Índice

Introducción Rank Sort Algoritmos de comparación-intercambio Bubble Sort ShearsortShearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 21: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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

Page 22: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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))

Page 23: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

23

Shearsort (III)

Fila

1 4 14 8 2 2 4 8 14 1 4 7 3

2 10 3 13 16 16 13 10 3 2 5 8 6

3 7 15 1 5 1 5 7 15 12 11 9 14

4 12 6 11 9 12 11 9 6 16 13 10 15

Inicio Fase 1 Fase 2

1 1 3 4 7 1 3 4 2 1 2 3 4

2 8 6 5 2 8 6 5 7 8 7 6 5

3 9 11 12 14 9 11 12 10 9 10 11 12

4 16 15 13 10 16 15 13 14 16 15 14 13

Fase 3 Fase 4 Fase 5 - Fin

Page 24: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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

Page 25: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

25

Shearsort (V)

Fila

1 4 14 8 2 2 4 8 14 2 16 1 12

2 10 3 13 16 16 13 10 3 4 13 5 11

3 7 15 1 5 1 5 7 15 8 10 7 9

4 12 6 11 9 12 11 9 6 14 3 15 6

Inicio Fase 1 Transposición

1 1 2 12 16 1 4 7 3 1 3 4 7

2 4 5 11 13 2 5 8 6 8 6 5 2

3 7 8 9 10 12 11 9 14 9 11 12 14

4 3 6 14 15 16 13 10 15 16 15 13 10

Fase 2 Transposición Fase 3

Page 26: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

26

Shearsort (y VI)

Fila

1 1 8 9 16 1 8 9 16 1 3 4 2

2 3 6 11 15 3 6 11 15 8 6 5 7

3 4 5 12 13 4 5 12 13 9 11 12 10

4 7 2 14 10 2 7 10 14 16 15 13 14

Transposición Fase 4 Transposición

1 1 2 3 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).

2 8 7 6 5

3 9 10 11 12

4 16 15 14 13

Fase 5 - Fin

Page 27: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

27

Índice

Introducción Rank Sort Algoritmos de comparación-intercambio Bubble Sort Shearsort MergesortMergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

Bibliografía

Page 28: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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).

Page 29: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

29

Mergesort (II)

Algoritmo secuencial– Fase de división:

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).

Page 30: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

30

Mergesort (III)

4 2 7 8 5 1 3 6

4 2 7 8 5 1 3 6

4 2 7 8 5 1 3 6

4 2 7 8 5 1 3 6

2 4 7 8 1 5 3 6

2 4 7 8 1 3 5 6

1 2 3 4 5 6 7 8

Page 31: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

31

Mergesort (IV)

Algoritmo paralelo simple (n procesadores)

P0P0 P4

P0 P2 P4 P6

P0 P1 P2 P3 P4 P5 P6 P7

P0

P0P0

P4

P2 P4 P6

Page 32: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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).

Page 33: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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 (c i).

Los elementos con índice par (even) son mezclados en otra lista L4 (d i). 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)

Page 34: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

34

Mergesort (VII)

L1 L2

1 3 4 7 2 5 6 8

a1 a2 a3 a4 b1 b2 b3 b4

L3 L4

1 2 4 6 3 5 7 8

c1 c2 c3 c4 d1 d2 d3 d4

L5

1 2 3 4 5 6 7 8

e1 e2 e3 e4 e5 e6 e7 e8

Page 35: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 36: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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

3 4 2 1 7 5 8 9

2 1 3 4 7 5 8 9

1 2 3 4 5 6 7 8

Page 37: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 38: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

38

Mergesort (y XI)

8 3 4 7 9 2 1 5

Fase 1 3 8 7 4 2 9 5 1 n=2 ai con ai+1

Fase 2 3 4 7 8 5 9 2 1 n=4 ai con ai+2

Fase 2 3 4 7 8 9 5 2 1 n=2 ai con ai+1

Fase 3 3 4 2 1 9 5 7 8 n=8 ai con ai+4

Fase 3 2 1 3 4 7 5 9 8 n=4 ai con ai+2

Fase 3 1 2 3 4 5 7 8 9 n=2 ai con ai+1

Page 39: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

39

Índice

Introducción Rank Sort Algoritmos de comparación-intercambio Bubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

QuicksortQuicksort– Simple– Hypercube

Bibliografía

Page 40: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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).

Page 41: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

41

Quicksort (II)

4 2 7 8 5 1 3 6

3 2 1 4 5 7 8 6

2 1 3 4 5 7 8 6

1 2 3 6 7 8

El proceso “vencerás” se dará cuando vayan terminando las llamadas recursivas.

Page 42: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

42

Quicksort (III)

Algoritmo paralelo simple (n procesadores)

P0

P0 P4

P0 P2 P4 P6

P0 P1 P6 P7

Page 43: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 44: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

000

001

010

011

100

101

110

111

000

001

010

011

100

101

110

111

000 001100 101

010 011110 111

Page 45: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

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.

Page 46: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

46

Quicksort (VIII)

Page 47: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

47

Quicksort (y IX)

– Análisis:

Computación 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.

Page 48: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

48

Índice

Introducción Rank Sort Algoritmos de comparación-intercambio Bubble Sort Shearsort Mergesort

– Simple– Odd-Even– Bitonic

Quicksort– Simple– Hypercube

BibliografíaBibliografía

Page 49: Algoritmos de Ordenación Paralelos Autor: Miguel Angel Botella Tomey.

49

Bibliografía

Kumar, Grama, Gupta, Karypis: Introduction to Parallel Computing. Design and Analysis of Algorithms. The Benjamin Cumming Publishing Company. 1994. Segunda edición.

Barry Wilkinson, Michael Allen: Parallel programming. Prentice-Hall. 1999.