paralelizacion de algoritmos de clasificacion

45
PARALELIZACIÓN DE ALGORITMOS DE CLASIFICACIÓN PALACIN PALACIOS, Pajuelo Daniel OSORIO TELLO, Jonathan Gustavo Cerro de Pasco, Enero de 2010

Upload: morris-star

Post on 19-Jun-2015

503 views

Category:

Documents


0 download

DESCRIPTION

Uploaded from Google Docs

TRANSCRIPT

Page 1: Paralelizacion de Algoritmos de Clasificacion

PARALELIZACIÓN DE

ALGORITMOS DE

CLASIFICACIÓN

PALACIN PALACIOS, Pajuelo Daniel OSORIO TELLO, Jonathan Gustavo

Cerro de Pasco, Enero de 2010

Page 2: Paralelizacion de Algoritmos de Clasificacion

.

Paralelización de Algoritmos de Clasificación

El problema de clasificación es un modelo en el ámbito de laprogramación. Esto se debe fundamentalmente a dos razones.

La primera es que en la práctica en una de las tareas más demandada en cualquier aplicación informática. Tanto es así que, el término ordenador hace referencia a este hecho.

La segundo, la ordenación de los datos es tan importante debido a que es la forma de organizar la información que permite la búsqueda y recuperación de la misma.

Page 3: Paralelizacion de Algoritmos de Clasificacion

Operaciones básicas de la clasificación Paralela

En general los algoritmos de clasificación se basan en la operación de comparación, se conoce como comparación-intercambio. Al paralelizar un algoritmo secuencial es necesario decidir cómo se distribuyen los datos entre los procesadores.

Sistema Secuencial tanto los datos como el resultado se almacenan en la memoria del sistema.

Sistema Paralelo se pueden almacenar en la memoria de un único procesador o repartirlos entre la propia de cada uno de ellos.

Page 4: Paralelizacion de Algoritmos de Clasificacion

Ordenación

Algoritmo ampliamente utilizado en programación paralela para distribuir datos.

Dos tipos de algoritmos:

Basados en comparación.○ Se basan en la operación comparar-intercambiar. ○ Límite inferior de complejidad: O(n * log n).

No basados en comparación.○ Basado en la representación de los números.○ Límite inferior de complejidad: O(n).

Page 5: Paralelizacion de Algoritmos de Clasificacion

En ordenación secuencial los mejores algoritmos son O (n*log n). Ejemplo: Quicksort , Mergesort.

Con N procesadores, se desea O(log n).

Demostrado por Leighton 84, aunque con una elevada constante oculta en la demostración.

Ordenación

Page 6: Paralelizacion de Algoritmos de Clasificacion

Características de la ordenación en paralelo Distribución de los datos (al principio / al final):

Todos los elementos en el mismo procesador.Cada procesador contiene un bloque de elementos.

○ Todos los elementos de Pi son menores que los de Pj si i < j.

Cómo se realizan las comparaciones:Cada procesador tiene un único elemento.Cada procesador posee un bloque de elementos.

Page 7: Paralelizacion de Algoritmos de Clasificacion

Comparaciones: 1 elemento por procesador

Primer caso: sólo un procesador ordena las secuencias.

Page 8: Paralelizacion de Algoritmos de Clasificacion

Ejemplo 1 :

Primer caso: sólo un procesador ordena las secuencias.

Iniciando

Nros designados a comprar

Page 9: Paralelizacion de Algoritmos de Clasificacion

Comparaciones: 1 elementos en cada procesador

Segundo caso: ambos procesadores realizan la ordenación.

Page 10: Paralelizacion de Algoritmos de Clasificacion

Ejemplo 2 :

Segundo caso: ambos procesadores realizan la ordenación.

Designados por la el usuario

Resultado Final OrdenadoNros designados a comprar

Page 11: Paralelizacion de Algoritmos de Clasificacion

CLASIFICACION POR

INTERCAMBIO DIRECTO O BURBUJA

Page 12: Paralelizacion de Algoritmos de Clasificacion

Este tipo de ordenamiento se basa fundamentalmente en un ordenamiento de tipo ascendente. Como su nombre lo indica, todo el ordenamiento es basado en una especie de inserción y el comportamiento interno del vector es como el de una burbuja.

El algoritmo se basa en el principio de comparar pares de elementos adyacentes eh intercambiarlos entre si hasta que estén todos ordenados

CLASIFICACIÓN POR INTERCAMBIO DIRECTO O

BURBUJA

1.1 Algoritmo secuencial La idea básica de este algoritmo es comparar parejas de elementos contiguos e intercambiarlos si es necesario

- Comparar pares de elementos contiguos.- Intercambiarlos si están desordenados.

Page 13: Paralelizacion de Algoritmos de Clasificacion

MÉTODO 1 (Pseudocódigo)

Algoritmo Burbuja 1INICIO //Ingresa la cantidad de números leer N //Lectura del vector Desde i ← 1 hasta N hacer leer (X [i]) Fin desde //clasificación del vector Desde i ← 1 hasta N-1 hacer desde j ← 1 hasta N-1 hacer si X [j] > X [j+1] entonces //intercambiar

AUXI ← X [j] X [j] ← X [j+1] X [j+1] ← AUXI

fin si fin desde Fin desde //imprimir lista ordenada Desde j ← 1 hasta N hacer escribir (X [j]) Fin desdeFIN

Page 14: Paralelizacion de Algoritmos de Clasificacion

PRUEBA DE PAPELN I J X [J] X [J+1] AUXI

111 2 3 4 5 6

9 3 4 -6 -8 15 9 3

993

2

3

3

99 4

9944

9 -6

99-6-6

4 9 -8

99-8

-8

5 9 15

6

15

9

9

9

9-8-63 4

Page 15: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

121 2 3 4 5 6

3 4 -6 -8 9 15 3 4

2

3

3

44 -6

44-6-6

4 -8

44-8-8

4 4 94

5 9 15

6

15

4

4

9

94-83 -6

PRUEBA DE PAPEL

Page 16: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

131 2 3 4 5 6

3 -6 -8 4 9 15 3 -6

33-6

2

3

-6

-83 -8

33-83

3 43

4 4 94

5 9 15

6

15

3

4

9

943-6 -8

PRUEBA DE PAPEL

Page 17: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

141 2 3 4 5 6

-6 -8 3 4 9 15 -6 -8

-6-6-8

2

3

-8

-6-6 3

3

3 43

4 4 94

5 9 15

6

15

-6

4

9

943-8 -6

PRUEBA DE PAPEL

Page 18: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

151 2 3 4 5 6

-6 -8 3 4 9 15 -8 -6

2

3

-8

-6-6 3

3

3 43

4 4 94

5 9 15

6

15

-6

4

9

943-8 -6

Lista Ordenada

15

PRUEBA DE PAPEL

Page 19: Paralelizacion de Algoritmos de Clasificacion

El método de la burbuja es difícil de paralelizar, debido concretamente al los dos ‘FOR’ interno.

Este hecho se entiende mejor observando la operación comparación-intercambio en cada fase del algoritmo.

La burbuja compara todos los pares adyacentes en orden, con lo que el algoritmo es intrínsecamente secuencial. Por tanto, una paralelizarían de este algoritmo en esta forma, además de difícil resultará inadecuada.

¿Observación?

Page 20: Paralelizacion de Algoritmos de Clasificacion

1.2 Transposición Impar - Par

Este método ordena N elementos en N fases (siendo N impar), y en cada fase se necesitan n/2 operaciones de comparación-intercambio, alternándose dos fases, la fase impar y la par. En la impar, los elementos en posiciones impares se comparan con sus vecinos de la derecha, y si no están ordenados se intercambian.

Page 21: Paralelizacion de Algoritmos de Clasificacion

MÉTODO 2 (Pseudocódigo)

Algoritmo burbuja2INICIO leer N Desde i ← 1 hasta N hacer leer (X [i]) Fin desde Desde i ← 1 hasta N-1 hacer desde j ← 1 hasta N- i hacer si X [j] > X [j+1] entonces //intercambiar

AUXI ← X [j] X [j] ← X [j+1] X [j+1] ← AUXI

fin si fin desde Fin desde

//imprimir lista ordenada Desde j ← 1 hasta N hacer escribir (X [j]) Fin desdeFIN

Page 22: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

111 2 3 4 5 6

9 3 4 -6 -8 15 9 3

993

2

3

3

99 4

9944

9 -6

99-6-6

4 9 -8

99-8

-8

5 9 15

6

15

9

9

9

9-8-63 4

PRUEBA DE PAPEL

Page 23: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

121 2 3 4 5 6

3 4 -6 -8 9 15 3 4

2

3

3

44 -6

44-6-6

4 -8

44-8-8

4 4 94

6

15

4

4

9-83 -6

PRUEBA DE PAPEL

Page 24: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

13

1 2 3 4 5 6

3 -6 -8 4 9 15 3 -6

33-6

2

3

-6

-83 -8

33-83

3 43

6

15

3

4 9-6 -8

N I J X [J] X [J+1] AUXI

14

1 2 3 4 5 6

-6 -8 3 4 9 15 -6 -8

-6-6-8

2-8

-6-6 3

3

6

15

-6

4 9-8

PRUEBA DE PAPEL

Page 25: Paralelizacion de Algoritmos de Clasificacion

N I J X [J] X [J+1] AUXI

15

1 2 3 4 5 6

-8 -6 3 4 9 15

-8 -6

-8 3

6

15-6 4 9

Lista Ordenada

PRUEBA DE PAPEL

Page 26: Paralelizacion de Algoritmos de Clasificacion

Este método es sencillo de paralelizar ya que durante cada fase, las operaciones de comparación-intercambio se pueden realizar simultáneamente.

Supóngase que se dispone de n procesadores, es decir, tantos como elementos a ordenar, y que se conectan en un anillo. Durante la fase impar los procesadores con etiqueta impar comparan e intercambian su elemento con el elemento del procesador vecino situado a su derecha, y a lo largo la fase par cada procesador con etiqueta par compara e intercambia su elemento con su vecino de la derecha.

¿Observación?

Page 27: Paralelizacion de Algoritmos de Clasificacion

CLASIFICACION SHELL

Page 28: Paralelizacion de Algoritmos de Clasificacion

CLASIFICACION SHELL

El ordenamiento shell, recibe este nombre en honor a su creador. Es un método de ordenamiento rápido y es de los más utilizados en la programación. Supongamos que se tiene un vector de 10 posiciones : 15  5  7  4  1  2  8  9  10  3El método shell busca primero la mitad del vector y hace una partición imaginaria así: 15  5  7  4  1  ¦  2  8  9  10  3Luego empieza una serie de comparaciones. Primero compara el primero de la parte izquierda con el primero de la parte derecha. Si el de la derecha es menor, los cambia de posición, luego sigue las comparaciones con el resto de los datos de la derecha. 2  5  7  4  1  ¦  15  8  9  10  3Una vez ha terminado la comparación pasa al siguiente término y repite la operación, y así hasta que termina con todos los datos que se encuentran a la izquierda.

Algoritmo Secuencia1

Page 29: Paralelizacion de Algoritmos de Clasificacion

2  3  7  4  1  ¦  15  8  9  10  5 2  3  5  4  1  ¦  15  8  9  10  7Una vez realizado este procedimiento, se procede nuevamente a subdividir las particiones. 2  3  ¦  5  4  1  ¦  15  8  ¦  9  10  7Nuevamente a cada una de las subpartes se le realiza el procedimiento anterior. 1  3  ¦  5  4  2  ¦  7  8  ¦ 15  10  9 1  2  ¦  5  4  3  ¦  7  8  ¦  15  10  9 1  ¦  2  ¦  5  ¦  4  3  ¦  7  ¦  8  ¦  15  ¦  10  9 1  ¦  2  ¦  3  ¦  5  4  ¦  7  ¦  8  ¦  9  ¦  15  10 1  ¦  2  ¦  3  ¦  5  ¦  4  ¦  7  ¦  8  ¦  9  ¦  15  ¦  10 1  ¦  2  ¦  3  ¦  4  ¦  5  ¦  7  ¦  8  ¦  9  ¦  10  ¦  15Luego, al final quedarán comparándose casillas de un solo dato y al final el vector quedará ordenado así: 1  2  3  4  5  7  8  9  10  15

CLASIFICACION SHELL

Page 30: Paralelizacion de Algoritmos de Clasificacion

INICIO leer N Desde i= 1 hasta N hacer leer x [i] Fin desde  salto ← n \ 2 mientras salto > 0 hacer para i ← (salto + 1) hasta n j ← i - salto mientras j > 0 k ← j + salto auxi ← x(k) si x(j) <= x(k) entonces j ← 0

ORDENACION SHELL (Pseudocódigo)

si no x(k) ← x(j) x(j) ← auxi fin si j ← j - salto fin mientras fin para salto ← salto \ 2 fin mientrasFIN

Page 31: Paralelizacion de Algoritmos de Clasificacion

salto i j k X(j) X(k) auxi

41 2 3 4 5 6

9 3 4 -6 -8 15

9 34-6 -8 15

3 1 94

5

-6

3

-6

9-6

-2

52 -8 -8

-8 3

-1

6 63 4 15 15

0

-3

PRUEBA DE PAPELsalto ← n \ 2 mientras salto > 0 hacer para i ← (salto + 1) hasta n j ← i - salto mientras j > 0 k ← j + salto auxi ← x(k) si x(j) <= x(k) entonces j ← 0

si no x(k) ← x(j) x(j) ← auxi fin si j ← j - salto fin mientras fin para salto ← salto \ 2 fin mientrasFIN

Page 32: Paralelizacion de Algoritmos de Clasificacion

salto i j k X (j) X (k) auxi

1 2 3 4 5 6

-6 -8 4 9 3 15

93 4

1

-8 15-6

2 1 2 -6 -8 -8-8 -6

0

3 2 3 -6 4 40

4 3 4 4 9 90

5 4 5 9 3 33 9

3 4 4 3 3

3 42 3 3 3-60

6 5 6 9 15 15

00

si no x(k) ← x(j) x(j) ← auxi fin si j ← j - salto fin mientras fin para salto ← salto \ 2 fin mientrasFIN

salto ← n \ 2 mientras salto > 0 hacer para i ← (salto + 1) hasta n j ← i - salto mientras j > 0 k ← j + salto auxi ← x(k) si x(j) <= x(k) entonces j ← 0

Page 33: Paralelizacion de Algoritmos de Clasificacion

Paralelización del algoritmo Shell en un hipercubo

Seguidamente se presenta la paralelización del método Shell para un hipercubo conectado.

Supóngase que n es el número de elementos a ordenar, d la dimensión del hipercubo y p = 2d el número de procesadores. Se asigna a cada procesador un bloque de n/p elementos. Mediante un anillo aplicado sobre un hipercubo se define el orden global de la secuencia ordenada. El algoritmo consta de dos fases:

1) En la primera, los procesadores que están lejos entre sí en el anillo clasifican sus elementos mediante operaciones de comparación-split.

2) Durante la segunda fase el algoritmo cambia a una clasificación por transposición impar-par. Como la primera fase del algoritmo mueve elementos cercanos a su posición final, el número de fases impares y pares realizadas en la segunda fase puede ser significativamente menor que p.

Page 34: Paralelizacion de Algoritmos de Clasificacion

CLASIFICACION QUICKSORT

Page 35: Paralelizacion de Algoritmos de Clasificacion

El ordenamiento de QuickSort es actualmente el más eficiente y veloz de los métodos de ordenamiento interno. Es también conocido con el nombre de rápido y de ordenamiento por partición en el mundo de habla hispana Su autor C.A. Hoare lo bautizó así.

Algoritmo de ordenamiento por el método de QuickSort Rápidorecursivo (A,N)

El algoritmo ordena los elementos del arreglo utilizando el método rápido de manera recursiva.

A es un arreglo de n elementos}Llamar al algoritmo REDUCERECURSIVO con 1 y N.

CLASIFICACION QUICKSORT

Algoritmo Secuencia1

Page 36: Paralelizacion de Algoritmos de Clasificacion

INICIO leer N Desde i= 1 hasta N hacer leer x [i] Fin desde  izquierdo ←alto derecha ← bajo a ← x (1) mientras izquierdo <= derecha hacer mientras x(izquierdo) < a y izquierdo < bajo izquierdo ← izquierdo +1 fin mientras mientras x(derecha) > a derecha ← derecha – 1 fin mientras

Page 37: Paralelizacion de Algoritmos de Clasificacion

si esquierdo <= derecha entonces auxi ← x(izquierdo) x(izquierdo) ← x(derecha) x(derecha) ← auxi izquierdo ← izquierdo + 1 derecha ← derecha – 1 fin si fin mientras si izquierdo < bajo + 1 entonces auxi ← x (derecha) x (derecha) ← x (1) x (1) ← auxi si no auxi ← x (bajo) x (bajo) ← x (1) x (1) ← auxi fin siFIN

Page 38: Paralelizacion de Algoritmos de Clasificacion

Paralelización del algoritmo Quisksort en un hipercubo

La formulación paralela del algoritmo quicksort sobre un hipercubo aprovecha las propiedades topológicas del hipercubo. Recuérdese que un hipercubo &dimensional puede dividirse en dos subcubos de dimensión (d-1) tal que cada procesador de un subcubo está conectado a un procesador del otro. Esta propiedad permite dividir el arreglo en dos mediante el pivote haciendo que cada partición esté en cada uno de los procesadores conectados de los subcubos.

Propiedad:

Un hipercubo de dimensión “d” puede dividirse en 2 hipercubos de dimensión (d-1) donde cada procesador de un subcubo está conectado a otro procesador del otro subcubo.

Page 39: Paralelizacion de Algoritmos de Clasificacion

Formulación para hipercubo Paso del algoritmo:

Elegir un pivote y enviarlo por broadcast a los demás. Particionar el bloque local usando ese pivote. Los procesadores conectados a través del d-ésimo enlace

intercambian sus bloques de forma que uno de ellos se queda con los elementos menores que el pivote y el otro con los demás.

Resultado del paso:

Después de esto, cada procesador del hipercubo (virtual) de dimensión (d-1) cuyo d-ésimo bit de mayor peso sea cero tendrá los elementos menores que el pivote.

Análogamente, todo procesador del hipercubo (virtual) de dimensión (d-1) cuyo d-ésimo bit de mayor peso sea uno tendrá los elementos mayores que el pivote.

Page 40: Paralelizacion de Algoritmos de Clasificacion

Formulación para hipercubo

Este procedimiento se aplica recursivamente en las d dimensiones.

Al final, los elementos están ordenados con respecto al orden impuesto por los procesadores.

Pero los elementos dentro de cada procesador no están ordenados.

Por eso, se aplica entonces una ordenación local por quicksort.

Page 41: Paralelizacion de Algoritmos de Clasificacion

Algoritmo: Formulación para hipercuboPROCEDURE Quicksort_hipercubo(B,n,id)BEGIN

FOR i:=1 TO d DOBEGIN

x:=pivot;particionar(B, x, B1, B2); // Tal que se cumple B1 <= x

<= B2

IF (nesimo_bit(i)=0)Enviar B2 al procesador a través del iésimo

enlace.C:=subsecuencia recibida a través de ese mismo

enlace.B:=B1 U C;

ELSEEnviar B1 al procesador a través del iésimo

enlace.C:=subsecuencia recibida a través de ese mismo

enlace.B:=B2 U C;

END;END;

Page 42: Paralelizacion de Algoritmos de Clasificacion

Análisis de la complejidad

Elegir el pivote: algoritmo de la mediana. Tiempo1 = O(1).

Tiempo inicial de ordenación local: Tiempoinicial = O( (n / p) * log (n / p) ).

Broadcast de la iésima iteración: Tiempoiésima = O(d – (i – 1)).

Broadcast en las (log p) iteraciones: Tiempo2 = ∑(i=1 hasta d) i = (d * (d + 1)) / 2 = O(log2 p).

Particionar la secuencia: Tiempo3 = O( log (n / p) ) + O ( n / p ) + O ( n / p ).

Tiempo de ejecución paralela: Tp = O ( (n / p) * log (n / p) ) + O( (n / p) * log p ) + O( log2 p ).

Page 43: Paralelizacion de Algoritmos de Clasificacion

CONCLUSIONES

Page 44: Paralelizacion de Algoritmos de Clasificacion

Se han presentado algunos aspectos de la programación en otros sistemas paralelos, considerando el problema de la clasificación En primer lugar se han indicado las operaciones básicas de la clasificación paralela: la comparación-intercambio y la comparación-split. Seguidamente se analizaron tres algoritmos clásicos: el método de burbuja, la clasificación Shell y la quicksort, estos dos últimos en un hipercubo.

Como puede observarse en este Capítulo, para realizar la paralelización de un algoritmo secuencial es imprescindible considerar el sistema paralelo sobre el que se realiza. Por ejemplo, si la arquitectura hubiera sido tipo mesh en lugar de hipercubo, tanto para la clasificación Shell como para la quicksort, el algoritmo paralelo sería diferente. Evidentemente, la sistematización de la metodología de programación debe tener en cuenta todos estos factores, por lo que es un área amplia que queda fuera del alcance de este texto.

Por último, resaltar la necesidad de realizar el análisis del coste de los algoritmos paralelizados, ya que es el mejor medio para determinar su rendimiento y la mejora que significa respecto al secuencia1 y/o en relación con otros algoritmos paralelos.

Page 45: Paralelizacion de Algoritmos de Clasificacion

Gracias…