La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Procesamiento ParaleloCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva,

Presentaciones similares


Presentación del tema: "Procesamiento ParaleloCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva,"— Transcripción de la presentación:

1 Procesamiento ParaleloCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva, Divide y Vencerás, Pipeline, Síncrona, Equilibrado de carga y Terminación 4Programación basada en memoria común 5Algoritmos y aplicaciones Ordenación, … 4 4 2, 3, 2 3, 2 4 4

2 Procesamiento ParaleloTemarioordenación-2 5Algoritmos de ordenación 1Introducción 2Comparar e intercambiar 3Burbuja y transposición par-impar 4Ordenación bidimensional 5Ordenación por Mezcla 6QuickSort 7Ordenación y Mezcla bitonic 8Counting, Radix y Sample

3 proParIntroducciónordenación-3 ¿Coste de ordenar (seg:mSeg)? Burbuja SelecDir InserDir quickSort 4:054 1:956 1:444 0: Wirth Pascal CDC 6400 V[512] ¿Conclusiones? quickSort más rápido y comparativamente mejor según aumenta V[] ¿Acelaración alcanzable? O(log n) con n procesadores ¡difícil! ¿Ordenación externa? :400 0:745 0:368 0: :530 2:972 1:477 0: :064 11:844 5:865 0:025 Burbuja SelecDir InserDir quickSort proPar C Core 2 Quad Q O3 O(n 2 ) O(nlogn) : :588

4 proParIntroducciónordenación-4 * Pentium D quickSort * QuadCore Core i7 3ª generación

5 proParIntroducciónordenación-5 Tesis: Algoritmos de Ordenación Conscientes de la Arquitectura y las Características de los Datos Dani Jiménez González – UPC – Mayo 2004

6 proParIntroducciónordenación-6 Rank Sort: Dificultad de alcanzar O(log n) con n procesadores Idea: Ubicar cada elemento de A[] en su hueco en B[] A B for (i=0; i

7 proParIntroducciónordenación-7 Rank Sort: ¿Alcanzable O(log n) con más de n procesadores? A B 10 forall (i=0; i

8 proParIntroducciónordenación-8 Rank Sort: Alcanzable O(log n) con n 2 procesadores /1 0/1/2 0/1/2/3/4 ¡ Eficiencia por los suelos y modelo memoria común !

9 proParComparar e intercambiarordenación-9 Evita tener array auxiliar if (A[i] > A[j]) { tmp = A[j]; A[j] = A[i]; A[i] = tmp; } Código básico A ij A ¿Paralelizar con paso mensajes? A Supongamos número por Pi B ¿Cómo sería el código básico?

10 A B Versión 1 proParComparar e intercambiar (dos versiones)ordenación-10 AB env (P b, &A); rec (P b, &A); rec (P a, &A); if (A > B) { env (P a, &B); B = A; } else env (P a, &A); > A B Versión 2 >> env (P b, &A); rec (P b, &B); if (A>B) A = B; rec (P a, &A); env (P a, &B); if (A>B) B = A; ¿ (A>B) igual resultado en P a y P b ?

11 Versión Números originales Números originales proParComparar e intercambiar (agrupar)ordenación-11 V[N] y P procesadores => N/P números por Pi Mezcla Números finales Números finales Devolver los menores Cada Pi mantiene su grupo ordenado ¿Necesidades de memoria?

12 Versión Números originales Números originales proParComparar e intercambiar (agrupar)ordenación-12 V[N] y P procesadores => N/P números por Pi Mezcla Guardar los mayores Guardar los menores

13 proParBurbuja y ordenación-13 Idea: Pasadas y en cada una intercambios => Mayores colocándose for (i=n-1; i>0; i--) for (j=0; j A[j+1]) swap(A[j], A[j+1]); En la primera pasada, el mayor en su sitio Segunda pasada ¿ Paralelizable ?

14 proParBurbuja y ordenación-14 Idea: Solapar pasadas pipeline Puedo iniciar pasada ¿ Código paralelo ?

15 proPar Burbuja y Transposición par-impar ordenación-15 Idea: Pasadas de dos fases (intercambio par + intercambio impar) P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 Par P i pares con P i+1 (derecha) Impar P i impares con P i+1 (derecha) ¿ Código paralelo ? ¿Cuándo parar? n-1 caso peor O(n) Pasada 1 Pasada 2

16 proPar Burbuja y Transposición par-impar ordenación-16 P0P0 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 // Fase Par recibir(Pder, vOtro); enviar (Pder, vMio ); mezclar(vMio, vOtro, vAux); menores(vAux, vMio); // Fase Impar if (yo > 0) recibir(Pizq, vOtro); enviar (Pizq, vMio ); mezclar(vMio, vOtro, vAux); mayores(vAux, vMio); } Proceso Par // Fase Par enviar (Pizq, vMio ); recibir(Pizq, vOtro ); mezclar(vMio, vOtro, vAux); mayores(vAux, vMio); // Fase Impar if (Pder < numProcesos) enviar (Pder, vOtro); recibir(Pder, vMio ); mezclar(vMio, vOtro, vAux); menores(vAux, vMio); } Proceso Impar P 0 => Reparte (scatter) vector, , recoge (gather) P i =>..... Ordena burbuja su trozo y transposición..... ?

17 proPar Burbuja y Transposición par-impar ordenación-17 0:856 ¿Cada vez mejor? ¿Truco? 0:0040:0130:025quickSort Sin embargo ¿Cuáles son los tiempos esperados? : : :064burbuSec burbuPar :224 0:113 0:074 3:421 0:865 0:407 13:693 3:434 1:557 0:2350:897 Eficiencia 1,97 3,94 5,79 7,53

18 proPar Ordenación bidimensional ordenación-18 Si disponemos de una malla 2D ¿Cómo ordenar? Como si fuese un array linealserpenteante y con transposición par-impar O(n) No se aprovecha la malla ¿Límite inferior en ordenación malla 2D => n * n ? 2( n –1) => O( n) Scherson, Sen y Shamir (1986) shearsort esquilar n (log n + 1)

19 proPar Ordenación bidimensional shearsort ordenación Fases 1,2,3,4,..., M Impares: 1,3,5,... => Por filas tipo serpenteante Pares: 2,4,6,... => Por columnas menores arriba Filas min max max min 2 Cols min max Cols Filas log n Filas ¿ Código paralelo ?

20 proPar Ordenación bidimensional shearsort ordenación Fases 1,2,3,4,..., M Impares: 1,3,5,... => Por filas tipo serpenteante Pares: 2,4,6,... => Por columnas menores arriba Filas min max max min 2 Cols min max log n Filas ¿Cuáles son los tiempos esperados? [205x205] 3: [290x290] 13: [410x410] 54:250burbuSec shearSec 0:2860:6701:8860:0060:0130:022quickSec

21 proPar Ordenación bidimensional transponer ordenación-21 Idea: Haciendo transposición, podemos trabajar sólo por filas CFCFF T FcFc T TFTFcFc FTFcFc TF Asignación de una fila por Procesador Transposición eficiente con MPI_ALL_TO_ALL

22 proPar Ordenación por Mezcla ordenación-22 ¿ Código ? P0P0 P1P1 P0P0 P3P3 P2P2 P5P5 P4P4 P7P7 P6P6 P0P0 P4P4 P0P0 P2P2 P4P4 P6P6 P0P0 P2P2 P4P4 P6P6 P0P0 P4P4 P0P0 Idea: Dividir y mezclar las partes (Similar a divide y vencerás) dividir mezclar Muy ineficiente

23 proPar Ordenación por Mezcla ordenación-23 Mejora: Dividir en trozos grandes y mezclar las partes Ordeno partes (rankSort) Proceso de mezcla ¿ Cómo afectará el número de trozos? ¿Paralelo? ¿Secuencial?

24 proPar Ordenación por Mezcla ordenación-24 quickSort en 0,013 rankPar 2:209 0:561 0:261 0:159 0:107 0:082 0:067 0:061 0:046 Medida de tiempos variando el número de trozos rankSec TrozosTiempo :822 4:414 2:214 1:479 1:110 0:888 0:744 0:638 0:560 0:451 0:112 0:081 0:108 0:189 0:368

25 proPar Quicksort Paralelo ordenación-25 Divide y vencerás tipo Árbol pivote P0P0 P0P0 P4P4 P0P0 P2P2 P4P4 P6P6 P4P4 P5P5 Componer las sublistas ordenadas ¿Paralelización?

26 proPar Quicksort Paralelo ordenación-26 Ubicando pivotes en su destino final pivote Puede que muy desequilibrado

27 proPar Quicksort Paralelo ordenación-27 Reparto de trabajo modelo Granja de Procesadores ¿ Mejor con hipercubo ?

28 P0P0 P1P1 P2P2 P3P3 Una fase quickSort proPar Quicksort Paralelo ordenación-28 Otra idea más adaptada a modelo cluster: El array repartido entre todos los nodos (antes y después) P0P0 P1P1 P2P2 P3P3 pivote > > > > P0P0 P1P1 P2P2 P3P3 Un intercambio > ¡ Repetir a las partes !

29 proPar Quicksort Paralelo ordenación-29 Otra idea más adaptada a modelo cluster (Bis): El array repartido entre todos los nodos (antes y después) P0P0 P1P1 P2P2 P3P3 > P0P0 P1P1 P2P2 P3P3 Una fase quickSort > > > > P0P0 P1P1 P2P2 P3P3 Más grandes Un intercambio Mayores Menores Más pequeños ¡ Ordenar cada trozo ! ¿ Sublistas equilibradas?

30 proPar Quicksort Paralelo ordenación-30 Medida de tiempos variando #muestras para elegir el pivote [PC9] mpirun –np 8 quickPar #muestras #muestras TiempoOcupación Min.. Max% 10 1: ,6% 100 1: ,9% : ,9% : ,7% Escalabilidad: quickPar Cluster 6:027 3:235 1:981 1:995 1:558 1: Núcleos TiempoEfici. 0,93 0,76 0,38 0,24 0,14 PC9 6:236 3:238 1:863 0:999 TiempoEfici. 0,96 0,84 0,78

31 proPar Ordenación y Mezcla bitonic ordenación-31 Secuencia bitónica estricta (dos sublistas: una crece y otra decrece) A = {a 0, a 1, a 2, a 3,..., a n-2, a n-1 } tal que: a 0 a i+1 > a i+2 >... > a n-2 > a n-1 Ejemplo: Compara y swap a i a i+n/2 2 secuencias bitónicas ¿Recursivo?

32 proPar Ordenación y Mezcla bitonic ordenación-32 Ejemplos visuales:

33 proPar Ordenación y Mezcla bitonic ordenación-33 Mezcla bitónica ejemplo completo ¿Código paralelo?

34 proPar Ordenación y Mezcla bitonic ordenación-34 Obtener secuencia bitónica a partir de secuencia desordenada SecBitónicas de 2 elementos ?

35 proPar Ordenación y Mezcla bitonic ordenación-35 Construcción de secuencia bitónica a partir del desorden sort sort sort salto

36 proPar Ordenación y Mezcla bitonic ordenación-36 Código secuencial sin optimizar

37 proPar Ordenación y Mezcla bitonic ordenación-37 Tiempos de ejecución CardinalidadquickSort :031 0:129 1:170 5:048 bitonic 0:225 1:028 12:464 60:635 rankSec* 0:435 shearSec 3:883 5: :891 60:014

38 proPar Counting sort (secuencial) ordenación-38 Idea: Ranksort O(n 2 ) puede convertirse en O(n) con ciertas condiciones 0<=a i <2 P A[] ¿Cuántas veces aparece cada número? C[] Sumas prefijo C[] Ubicar A[] en B[] B[] 031 ¿Código paralelo?O (n+p+n) ¡Estable!

39 proPar Ordenación y Mezcla bitonic ordenación-39 Tiempos de ejecución bitonic 0:225 1:028 12:464 60:635 CardinalidadquickSort :031 0:129 1:170 5:048 counting1 0:015 0:117 1:547 7:059 Counting1 Cardinalidad C[] = A[] counting2 0:007 0:034 0:456 2:061 Counting2 Cardinalidad C[] = A[] / 4

40 proPar Radix sort ordenación-40 Idea: Claves numéricas con una base => ordenar por dígitos ¿Counting sort? Counting sort Counting sort Vector C[] pequeño Estabilidad fundamental

41 proPar Radix sort ordenación-41 Jugar con más de un bit por pasada

42 M-1 P0P0 P1P1 P9P9 proPar Sample sort ordenación-42 Ordenar mi cubeta Recolectar en mi cubeta Para todo Pi Problemática de la ordenación mediante cubetas: Puede que muy desequilibrado Meter en cada cubeta misma cantidad de números ¡ Elegir 9 elementos frontera equiespaciados !

43 proPar Sample sort ordenación Mezcla

44 proPar Sample sort ordenación-44 FIN Datos antiguos


Descargar ppt "Procesamiento ParaleloCurso 13/14 1Computadores Paralelos 2Programación basada en paso de mensajes 3Técnicas básicas de programación paralela Compulsiva,"

Presentaciones similares


Anuncios Google