Algoritmos de Ordenación Paralelos

Slides:



Advertisements
Presentaciones similares
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities scuola.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
50 formas de decir “Te Amo”.
La mediana La mediana es el valor tal que el 50 % de las observaciones son menores y 50 % de ellas son mayores a dicho valor. En otra palabras, la mediana.
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
Matemática Financiera 1º ADEUtilización de la Función TIR en el cálculo del tanto efectivo 1 de 37 Cálculo de tantos efectivos Utilización de la función.
TEMA 5.- 1ª PARTE. EL A.O. Y SUS APLICACIONES
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
MOVIMIENTO ARMÓNICO SIMPLE MOVIMIENTO ARMÓNICO SIMPLE
SISTEMA DE NUMEROS NÚMEROS ENTEROS DIVISIBILIDAD NÚMEROS PRIMOS
Árboles de decisión Tema 9 Parte teórica Minería de datos
Macroeconomía 5e Michael Parkin CAPÍTULO 3 El problema económico.
5 pt 5 pt 5 pt 5 pt 5 pt 10 pt 10 pt 10 pt 10 pt 10 pt 15 pt 15 pt
1 XML Extensible Markup Language HTML HyperText Markup Language normas06_01.xml.
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities alimentazione.
PROGRAMACIÓN PARALELA Tema 3: Rutinas básicas de comunicación
Montículos Daniel González Pérez Cristina Sánchez Aragón
Los elementos invertibles de Z6 son 1 y 5
Estadística Administrativa I
C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281. C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281 1-Ingrese a menú 2-Ingrese a Mensajes 3-Ingrese a Correo 4-Seleccione.
1. Apoyo exterior sobre ala inferior de viga de acero
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Phone2Wave-Server Manual de Operación.
Repaso del capítulo Primer Paso
Parte 3. Descripción del código de una función 1.
Tema 1.- Aritmética. 1.-Usar el algoritmo de Euclides para calcular el máximo común divisor de a y b y expresarlo en función de a y b para: a) a= 56,
Calendario 2008 Imágenes variadas Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2008.
EL OSO APRENDIZ Y SUS AMIGOS
50 principios 1. Los clientes asumen el mando.
1 PROYECTO DE PRESUPUESTO DE EGRESOS DE LA FEDERACION 2002 COORDINACIÓN DE POLITICA ECONOMICA GP-PRD.
Aplicación de la Derivada
Microeconomía 5e Michael Parkin CAPÍTULO 3 El problema económico.
Ecuaciones Cuadráticas
3 Enero 2010 PERÚ: IV CENSO NACIONAL ECONÓMICO, APURÍMAC.
RAZONAMIENTO MATEMATICO Mg. CORNELIO GONZALES TORRES
Sesión sobre presentación de solicitudes de evaluación de la actividad investigadora a la CNEAI (16-XII-2013) Sesión sobre presentación de solicitudes.
ProParCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás,
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
Programación dinámica (1)
DETERMINANTES DE UNA MATRIZ
© Manuel ColladoVersiones-1 Control de versiones, configuración y cambios VCS: Version Control System SCM: Software Configuration Management.
Control de versiones, configuración y cambios
BEATRIZ LAFONT VILLODRE
MSc. Lucía Osuna Wendehake
Calendario 2009 “Imágenes variadas” Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2009.
SUCESIONES Y PROGRESIONES.
Señales y sistemas de tiempo discreto
Los 17 grupos cristalográficos planos
Estructuras de control
Manual de Procedimientos Procedimiento de ejecución del programa de
1 8 de febrero del Chapter 5 Encoding 3 Figure 5-1 Different Conversion Schemes.
ESTADIGRAFOS DE DISPERSION
LA RECTA Y SUS ECUACIONES
Algoritmos de ordenación
Herramienta FRAX Expositor: Boris Inturias.
CHAPTER 4 VOCABULARY: PART II
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
Divide y vencerás 1. Método general.
Transcripción de la presentación:

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

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

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.

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

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

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

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

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)

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

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

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.

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

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;

Algortimos comparación-intercambio (y IV)

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

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

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; }

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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.

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

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.

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

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

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

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

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

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.

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

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.

Quicksort (VIII)

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.

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

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.