Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe TAT 3 - Computacion Paralela
Informe TAT 3 - Computacion Paralela
Facultad de Ingeniería
Departamento de Informática
TAT Nº3
Algoritmos de Ordenamiento (AO)
Grupo : N° 2
2
2.4.5. ShellSort .................................................................................................................... 23
2.4.6. HeapSort.................................................................................................................... 25
2.4.7. MergeSort ................................................................................................................. 26
2.5. Análisis teórico que permita concluir el por qué es conveniente paralelizar AO ............. 27
2.6. Análisis de Métricas de Desempeño (Speedup, Eficiencia y Coste) .................................. 28
2.6.1. BubbleSort ................................................................................................................. 28
2.6.2. InsertionSort.............................................................................................................. 29
2.6.3. SelectionSort ............................................................................................................. 31
2.6.4. QuickSort ................................................................................................................... 32
2.6.5. ShellSort .................................................................................................................... 33
2.6.6. HeapSort.................................................................................................................... 34
2.6.7. MergeSort ................................................................................................................. 36
2.7. Desarrollo de un análisis teórico y operacional global y concluya al respecto ................. 37
3. Bibliografía ................................................................................................................................ 39
4. Anexo......................................................................................................................................... 40
4.1. Métricas de rendimiento................................................................................................... 40
3
1. Introducción
El desarrollo de la problemática expuesta tiene como objetivo conocer más a fondo los
distintos métodos de ordenamiento existente, desde el más simple al más complejo,
además de la utilización de todos los tópicos analizados en la clase del ramo
Computación Paralela, con la intención de realizar una comparación en el funcionamiento
de los AO con respecto de su Speedup, Eficiencia y Coste.
4
2. Desarrollo
2.1. Descripción de los AO y su complejidad algorítmica
teórica
2.1.1. BubbleSort
Por otra parte en cuanto a la complejidad del algoritmo podemos decir que a pesar de que
este es uno de los algoritmos más sencillos de implementar, su orden O (n2) lo hace muy
ineficiente para ser usado en listas compuestas por un gran número de elementos.
5
2.1.2. InsertionSort
El ordenamiento por inserción (insertion sort) es una manera muy natural y fácil de
ordenamiento, y puede usarse en tareas cotidianas como ordenar un mazo de cartas
numeradas en forma arbitraria.
En cuanto al funcionamiento, inicialmente se tiene un solo elemento, que obviamente es
un conjunto ordenado, después, cuando hay k elementos ordenados de menor a mayor,
se toma el elemento k+1 y se compara con todos los elementos ya ordenados,
deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han
sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos
(todos los elementos fueron desplazados y este es el más pequeño). En este punto
se inserta el elemento k+1 debiendo desplazarse los demás elementos.
Por otra parte, en cuanto a la complejidad del algoritmo, corresponde a una complejidad
cuadrática O (n²), para ordenar una lista de N elementos.
2.1.3. SelectionSort
En cuanto a la complejidad del algoritmo es de O (n2) operaciones para ordenar una lista
de N elementos.
2.1.4. QuickSort
6
En cuanto al funcionamiento consiste en el siguiente:
Primero se toma un elemento X de una posición cualquiera del arreglo, luego se trata de
ubicar a X en la posición correcta del arreglo, de tal forma que todos los elementos que se
encuentran a su izquierda sean menores o iguales a X y todos los elementos que se
encuentren a su derecha sean mayores o iguales a X. Por ultimo se repiten los pasos
descritos anteriormente, pero ahora para los sub-conjuntos de datos que se encuentran a
la izquierda y a la derecha de la posición correcta de X en el arreglo, siempre y cuando
estos sub-conjuntos contengan más de un elemento. Una vez terminado este proceso
todos los elementos estarán ordenados.
2.1.5. ShellSort
7
2.1.6. HeapSort
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un
montículo (Heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima)
en sucesivas iteraciones obteniendo el conjunto ordenado.
2.1.7. MergeSort
N Ts (segundos)
100000 20,164
200000 80,684
300000 181,516
400000 327,480
8
500000 504,784
600000 720,640
700000 982,72
800000 1301,192
900000 1651,660
1000000 1988,372
Según los datos obtenidos en el desarrollo del algoritmo BubbleSort, se puede observar la
característica fundamental de este, ya que si bien es el algoritmo más fácil de
implementar, es a su vez el algoritmo más costoso, ya que aunque el arreglo estuviera
completamente ordenado tendría el mismo costo que si no lo estuviera, por esta razón es
que el algoritmo muestra los valores más altos de todos (ej. N=1000000 con un tiempo de
1988,372 segundos).
2.2.2. InsertionSort
N Ts (segundos)
100000 13,04
200000 52,15
300000 117,41
400000 208,78
500000 326,08
600000 469,16
700000 638,91
800000 834,28
900000 1056,20
1000000 1304,17
Si bien este algoritmo entrega valores más positivos que el BubbleSort; no se encuentra
tan alejado este, por la simple razón que InsertionSort también hace un análisis y
comparación completa del arreglo a ordenar, por esta razón ambos algoritmo poseen la
misma complejidad de O (n2).
2.2.3. SelectionSort
9
N Ts (segundos)
100000 10.91
200000 43.61
300000 99.4
400000 179.49
500000 282.89
600000 408.5
700000 540.21
800000 730.97
900000 926.18
1000000 1113.39
Figura 3 - Tiempos Secuenciales SelectionSort
Este algoritmo junto con el BubbleSort son los algoritmos más costosos en el
ordenamiento de datos, lo cual se ve claramente en los valores obtenidos en la Figura
3.Por otro lado el SelectionSort presenta una pequeña mejora frente al BubbleSort por la
simple razón que en este se realizan menos procesos de intercambio de posiciones de los
datos, pero si se analiza el vector de manera completa.
2.2.4. QuickSort
N Ts (segundos)
100000 7,21
200000 27,45
300000 49,93
400000 78,61
500000 108,56
600000 145,28
700000 388,32
800000 446,45
900000 496,57
1000000 618,855
10
dividir el vector se trabaja tan solo con una parte de éste y la otra, queda en resumidas
palabras en “stanby”, mientras se trabaja con la parte mencionada.
2.2.5. ShellSort
N Ts (segundos)
100000 4,68
200000 18,74
300000 42,11
400000 74,92
500000 117,32
600000 168,69
700000 230,19
800000 300,74
900000 384,35
1000000 471,91
Por otro lado, esta que ShellSort no puede competir con QuickSort, HeapSort y
MergeSort, esto ocurre netamente porque estos algoritmos mencionados anteriormente
tienen tiempos muy por debajo de ShellSort, solo para mencionar MergeSort con N=
1.000.000 tiene un tiempo de 0.99 seg, lo cual sería cerca del 476 veces más rápido que
ShellSort.
2.2.6. HeapSort
N Ts (segundos)
100000 0.2
200000 0.3
300000 0.5
400000 0.6
500000 0.7
600000 0.9
700000 1.1
800000 1.2
11
900000 1.3
1000000 1.6
2.2.7. MergeSort
N Ts (segundos)
100000 0,098
200000 0,21
300000 0,301
400000 0,39
500000 0,502
600000 0,62
700000 0,699
800000 0,798
900000 0,9
1000000 0,99
12
2.3. Análisis operacional de los AO de forma paralela (Nº de
Procesos/Nodos vs T(N))
2.3.1. BubbleSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 1,946 1,68 1,527
200000 4,585 2,355 1,945
300000 8,889 3,815 2,804
400000 15,22 5,112 3,197
500000 23,248 7,894 4,092
600000 32,649 11,251 5,074
700000 44,402 13,126 6,917
800000 56,817 16,765 8,36
900000 71,695 21,167 10,374
1000000 87,349 23,261 14,227
Si bien este algoritmo en paralelo sigue arrojando los valores más altos en comparación a
los demás algoritmos implementados en paralelo, podemos establecer que se redujeron
los tiempos considerablemente, además que mientras más recursos o máquinas se
utilizaron más redujeron estos tiempos, todo lo anterior lo podemos ver reflejado en el
análisis de 1000000 de datos, que en secuencial demoraba 1988,372 segundos y ahora
en paralelo usando 12 hilos (3 máquinas) demoró solo 14,227 reduciendo
considerablemente.
2.3.2. InsertionSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0,86 0,25 0,15
200000 3,33 0,91 0,46
300000 7,54 1,97 0,99
400000 13,41 3,45 1,65
500000 20,77 5,35 2,51
600000 29,95 7,66 3,62
700000 40,79 10,38 4,8
800000 53,43 13,49 6,25
900000 67,54 17,68 7,86
13
1000000 83,49 21,04 9,67
2.3.3. SelectionSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0.71 0.24 0.14
200000 2.77 0.77 0.41
300000 6.2 1.71 0.83
400000 11.05 2.96 1.39
500000 17.16 4.42 2.22
600000 24.83 6.35 2.98
700000 33.71 8.65 4.19
800000 43.9 11.98 5.31
900000 56.47 14.81 6.53
1000000 69.38 17.61 8.12
14
2.3.4. QuickSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0,33 0,21 0,14
200000 2,94 0,74 0,39
300000 6,52 1,73 0,83
400000 11,7 3,03 1,47
500000 18,29 4,72 2,24
600000 24,21 6,77 3,17
700000 9,17 4,25
800000 12,01 5,57
900000 13,92 6,97
1000000 17,96 8,6
En lo demás, al paralelizar el algoritmo, mejora cada vez más con los hilos usados y estos
responden de la manera esperada bajando cada vez más los tiempos, en comparación a
los algoritmos anteriormente señalados.
2.3.5. ShellSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0,29 0,08 0,03
200000 1,16 0,3 0,12
300000 2,62 0,64 0,29
400000 4,7 1,16 0,52
500000 7,28 1,81 0,8
15
600000 10,45 2,62 1,14
700000 14,21 3,58 1,58
800000 18,61 4,62 2,06
900000 23,54 5,88 2,6
1000000 29,26 7,25 3,19
La situación en paralelo mejora bastante los tiempos de ShellSort. .Si miramos los datos,
vemos que las mejoras van creciendo en función de la cantidad de Hilos que se usan.
De manera análoga a los tiempos secuenciales , las cantidad de veces que es rápido
ShellSort a los que se comparó en el apartado Secuencial , sigue manteniéndose , salvo
con los algoritmos QuickSort, HeapSort y MergeSort que lo dejan abajo en relación al
tiempo que se demora en ejecutar con cualquier N a analizar.
2.3.6. HeapSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0.001 0.04 0.05
200000 0.02 0.08 0.1
300000 0.03 0.12 0.14
400000 0.02 0.15 0.18
500000 0.03 0.2 0.23
600000 0.06 0.23 0.28
700000 0.05 0.27 0.32
800000 0.06 0.31 0.37
900000 0.06 0.34 0.42
1000000 0.06 0.38 0.47
Por el lado de los tiempos paralelos, se puede apreciar de la Figura 13, que los
tiempos con p =4 son bastante mejores que los de p=8 y=12.Esto sucede porque aquí
interviene un tiempo de comunicación el cual degrada un poco el algoritmo HeapSort
dando valores un poco más altos, pero siguen siendo buenos si los comparamos con el
conjunto de algoritmos más lentos mencionados en el apartado Secuencial de HeapSort.
16
2.3.7. MergeSort
N Tp (p = 4) Tp (p = 8) Tp (p = 12)
100000 0,001 0,04 0,05
200000 0,01 0,06 0,099
300000 0,02 0,1 0,13
400000 0,03 0,15 0,158
500000 0,02 0,17 0,23
600000 0,05 0,21 0,25
700000 0,05 0,24 0,32
800000 0,03 0,29 0,37
900000 0,05 0,35 0,4
1000000 0,05 0,379 0,478
En el ambiente paralelo le pasa lo mismo que HeapSort incrementándose los tiempos por
culpa de la comunicación que hay en el paso de los mensajes. Aunque estos tiempos
hayan empeorado (el que empeore depende de la situación en la cual se toma mucha
importancia o no a este tipo de tiempo, por ejemplo Ordenar Información de los bancos
mundiales), se sigue manteniendo un buen rendimiento con más procesadores. Como
dato que se presenta en la Figura 14 se ve que, para este tipo de muestras el tiempo no
sobrepaso los 0,5 seg, esto lo hace ser uno de los mejores algoritmos a nivel secuencial y
paralelo junto a QuickSort.
17
N v/s Tiempo de
Ejecución
90
80
70
60
50
40
30
20
10
0
4 Procesadores
(seg) N
8 Procesadores
(seg)
12 Procesadores
(seg)
18
resaltar que BubbleSort es el que mostro peor desempeño respecto a los demás, lo cual
se ve reflejado en el gráfico. A nivel de complejidad, esta se mantuvo usando p=4,
llegando solamente a bajar los tiempos. Por el contrario, usando p=8 y p=12, el algoritmo
además de bajar los tiempos considerablemente se llega a observar que la complejidad
tiende a bajar hasta comportarse de forma similar o muy parecida a una de complejidad
O(n).
2.4.2. InsertionSort
N v/s Tiempo de
Ejecución
Tiempo de ejecución(en segundos)
1500
1000
500
19
N v/s Tiempo de
90
Ejecución
80
Tiempo de ejecución(segundos)
70
60
50
40
30
20
10
0
4 Procesadores N
(seg)
8 Procesadores
(seg)
12 Procesadores
(seg)
2.4.3. SelectionSort
20
N v/s Tiempo de
70
60
50
40
30
20
10
0
4 Procesadores (seg)
N
8 Procesadores (seg)
12 Procesadores (seg)
21
El comportamiento de SelectionSort a nivel gráfico, se comporta parecido a los analizados
anteriormente (BubbleSort y InsertionSort), solo que estos tiempos son mejores y la
complejidad algorítmica demora menos en llegar a O(N) que ambos.
2.4.4. QuickSort
N v/s Tiempo de
Ejecución
700
Tiempo de ejecución(en segundos)
600
500
400
300
200
100
0
22
N v/s Tiempo de Ejecución
30
Tiempo de ejecución(segundos)
25
20
15
10
5
0
4 Procesadores (seg)
N
8 Procesadores (seg)
12 Procesadores (seg)
2.4.5. ShellSort
23
N V/S Tiempo
500
30
25
20
15
10
5
0
4 Procesadores (seg) N
8 Procesadores (seg)
12 Procesadores (seg)
24
lineal, pero mejora notablemente en comparación de los tiempos de los anteriores
algoritmos.
2.4.6. HeapSort
25
En esta graficas vemos un cambio notable en comparación a los otros algoritmos, sus
complejidades ya no están parecidas al O(n^2), sino más bien a una recta la cual sube al
trabajar con un mayor número de procesadores (pero muy poco en comparación de los
tiempos). En este caso, se ve reflejado la demora por el tiempo de comunicación que
existe en la red en donde se trabajó. El tiempo de comunicación para 8 procesadores es
de 0.78 ms y para el procesamiento con 12, el tiempo de comunicación de los 3 equipos
es de 1.56ms, lo cual debe ser descontado de cada valor entregado y esto bajaría
notablemente los tiempos, pero los gráficos se comportarían de forma similar a lo
expuesto.
2.4.7. MergeSort
1
0,8
0,6
0,4
0,2
0
26
N v/s Tiempo de Ejecución
0,6
Tiempo de ejecución(segundos)
0,5
0,4
0,3
0,2
0,1
4 Procesadores (seg) N
8 Procesadores (seg)
12 Procesadores (seg)
27
En granularidad fina, las tareas individuales son relativamente pequeñas en término de
tiempo de ejecución. La comunicación entre los procesadores es frecuente. En cambio en
granularidad gruesa la comunicación entre los procesadores es poco frecuente y se
realiza después de largos periodos de ejecución.
2.6.1. BubbleSort
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 10,36176773 12,00238095 13,20497708
200000 17,59738277 34,26072187 41,48277635
300000 20,42029475 47,57955439 64,73466476
400000 21,51642576 64,06103286 102,4335314
500000 21,71300757 63,94527489 123,3587488
600000 22,07234525 64,05119545 142,026015
700000 22,13233638 74,86820052 142,0731531
800000 22,90145555 77,61359976 155,6449761
900000 23,03731083 78,02995228 159,2114903
28
1000000 22,76353479 85,48093375 139,7604555
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 2,590441932 1,500297619 1,650622135
200000 4,399345692 4,282590234 5,185347044
300000 5,105073687 5,947444299 8,091833096
400000 5,379106439 8,007629108 12,80419143
500000 5,428251893 7,993159362 15,4198436
600000 5,518086312 8,006399431 17,75325187
700000 5,533084095 9,358525065 17,75914414
800000 5,725363888 9,70169997 19,45562201
900000 5,759327708 9,753744036 19,90143628
1000000 5,690883696 10,68511672 17,47005693
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 7,784 13,44 18,324
200000 18,34 18,84 23,34
300000 35,556 30,52 33,648
400000 60,88 40,896 38,364
500000 92,992 63,152 49,104
600000 130,596 90,008 60,888
700000 177,608 105,008 83,004
800000 227,268 134,12 100,32
900000 286,78 169,336 124,488
1000000 349,396 186,088 170,724
Figura 31 Coste BubbleSort
2.6.2. InsertionSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 15,1627907 52,16 86,93333333
200000 15,66066066 57,30769231 113,3695652
29
300000 15,57161804 59,59898477 118,5959596
400000 15,56897837 60,51594203 126,5333333
500000 15,69956668 60,94953271 129,9123506
600000 15,66477462 61,24804178 129,6022099
700000 15,66339789 61,55202312 133,10625
800000 15,61444881 61,84432913 133,4848
900000 15,63814036 59,739819 134,3765903
1000000 15,62067313 61,98526616 134,8676319
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 3,790697674 6,52 7,244444444
200000 3,915165165 7,163461538 9,447463768
300000 3,892904509 7,449873096 9,882996633
400000 3,892244594 7,564492754 10,54444444
500000 3,924891671 7,618691589 10,82602922
600000 3,916193656 7,656005222 10,80018416
700000 3,915849473 7,69400289 11,0921875
800000 3,903612203 7,730541142 11,12373333
900000 3,90953509 7,467477376 11,19804919
1000000 3,905168284 7,74815827 11,23896932
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 3,44 2 1,8
200000 13,32 7,28 5,52
300000 30,16 15,76 11,88
400000 53,64 27,6 19,8
500000 83,08 42,8 30,12
600000 119,8 61,28 43,44
700000 163,16 83,04 57,6
800000 213,72 107,92 75
900000 270,16 141,44 94,32
1000000 333,96 168,32 116,04
30
2.6.3. SelectionSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 15.36619718 45.45833333 77.92857143
200000 15.74368231 56.63636364 106.3658537
300000 16.03225806 58.12865497 119.7590361
400000 16.24343891 60.63851351 129.1294964
500000 16.48543124 64.00226244 127.4279279
600000 16.45187273 64.33070866 137.0805369
700000 16.02521507 62.45202312 128.928401
800000 16.65079727 61.01585977 137.6591337
900000 16.40127501 62.53747468 141.8346095
1000000 16.04770827 63.22487223 137.1169951
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 3.841549296 11.36458333 19.48214286
200000 3.935920578 14.15909091 26.59146341
300000 4.008064516 14.53216374 29.93975904
400000 4.060859729 15.15962838 32.2823741
500000 4.121357809 16.00056561 31.85698198
600000 4.112968184 16.08267717 34.27013423
700000 4.006303767 15.61300578 32.23210024
800000 4.162699317 15.25396494 34.41478343
900000 4.100318753 15.63436867 35.45865237
1000000 4.011927068 15.80621806 34.27924877
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 2.84 1.92 1.68
200000 11.08 6.16 4.92
300000 24.8 13.68 9.96
400000 44.2 23.68 16.68
500000 68.64 35.36 26.64
31
600000 99.32 50.8 35.76
700000 134.84 69.2 50.28
800000 175.6 95.84 63.72
900000 225.88 118.48 78.36
1000000 277.52 140.88 97.44
2.6.4. QuickSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 21,84848485 34,33333333 51,5
200000 9,336734694 37,09459459 70,38461538
300000 7,65797546 28,86127168 60,15662651
400000 6,718803419 25,94389439 53,47619048
500000 5,935483871 23 48,46428571
600000 6,000826105 21,45937962 45,829653
700000 42,34678299 91,36941176
800000 37,17318901 80,15260323
900000 35,67313218 71,24390244
1000000 34,45740535 71,95988372
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 5,462121212 8,583333333 12,875
200000 2,334183673 9,273648649 17,59615385
300000 1,914493865 7,215317919 15,03915663
400000 1,679700855 6,485973597 13,36904762
500000 1,483870968 5,75 12,11607143
600000 1,500206526 5,364844904 11,45741325
700000 10,58669575 22,84235294
800000 9,293297252 20,03815081
900000 8,918283046 17,81097561
1000000 8,614351336 17,98997093
32
Figura 39 Eficiencia QuickSort
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 1,32 1,68 1,68
200000 11,76 5,92 4,68
300000 26,08 13,84 9,96
400000 46,8 24,24 17,64
500000 73,16 37,76 26,88
600000 96,84 54,16 38,04
700000 73,36 51
800000 96,08 66,84
900000 111,36 83,64
1000000 143,68 103,2
2.6.5. ShellSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 16,13793103 58,5 156
200000 16,15517241 62,46666667 156,1666667
300000 16,07251908 65,796875 145,2068966
400000 15,94042553 64,5862069 144,0769231
500000 16,11538462 64,81767956 146,65
600000 16,14258373 64,38549618 147,9736842
700000 16,19915552 64,29888268 145,6898734
800000 16,16012896 65,0952381 145,9902913
900000 16,32752761 65,36564626 147,8269231
1000000 16,12816131 65,09103448 147,9341693
33
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 4,034482759 14,625 39
200000 4,038793103 15,61666667 39,04166667
300000 4,018129771 16,44921875 36,30172414
400000 3,985106383 16,14655172 36,01923077
500000 4,028846154 16,20441989 36,6625
600000 4,035645933 16,09637405 36,99342105
700000 4,049788881 16,07472067 36,42246835
800000 4,040032241 16,27380952 36,49757282
900000 4,081881903 16,34141156 36,95673077
1000000 4,032040328 16,27275862 36,98354232
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 1,16 0,64 0,36
200000 4,64 2,4 1,44
300000 10,48 5,12 3,48
400000 18,8 9,28 6,24
500000 29,12 14,48 9,6
600000 41,8 20,96 13,68
700000 56,84 28,64 18,96
800000 74,44 36,96 24,72
900000 94,16 47,04 31,2
1000000 117,04 58 38,28
2.6.6. HeapSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 200 5 4
200000 15 3.75 3
300000 16.66666667 4.166666667 3.571428571
400000 30 4 3.333333333
34
500000 23.33333333 3.5 3.043478261
600000 15 3.913043478 3.214285714
700000 22 4.074074074 3.4375
800000 20 3.870967742 3.243243243
900000 21.66666667 3.823529412 3.095238095
1000000 26.66666667 4.210526316 3.404255319
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 50 0.625 0.333333333
200000 3.75 0.46875 0.25
300000 4.166666667 0.520833333 0.297619048
400000 7.5 0.5 0.277777778
500000 5.833333333 0.4375 0.253623188
600000 3.75 0.489130435 0.267857143
700000 5.5 0.509259259 0.286458333
800000 5 0.483870968 0.27027027
900000 5.416666667 0.477941176 0.257936508
1000000 6.666666667 0.526315789 0.283687943
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 0.004 0.32 0.6
200000 0.08 0.64 1.2
300000 0.12 0.96 1.68
400000 0.08 1.2 2.16
500000 0.12 1.6 2.76
600000 0.24 1.84 3.36
700000 0.2 2.16 3.84
800000 0.24 2.48 4.44
900000 0.24 2.72 5.04
1000000 0.24 3.04 5.64
35
2.6.7. MergeSort
Speedup
N Sp (p = 4) Sp (p = 8) Sp (p = 12)
100000 98 2,45 1,96
200000 21 3,5 2,121212121
300000 15,05 3,01 2,315384615
400000 13 2,6 2,46835443
500000 25,1 2,952941176 2,182608696
600000 12,4 2,952380952 2,48
700000 13,98 2,9125 2,184375
800000 26,6 2,751724138 2,156756757
900000 18 2,571428571 2,25
1000000 19,8 2,612137203 2,071129707
Eficiencia
N Ep (p = 4) Ep (p = 8) Ep (p = 12)
100000 24,5 0,30625 0,163333333
200000 5,25 0,4375 0,176767677
300000 3,7625 0,37625 0,192948718
400000 3,25 0,325 0,205696203
500000 6,275 0,369117647 0,181884058
600000 3,1 0,369047619 0,206666667
700000 3,495 0,3640625 0,18203125
800000 6,65 0,343965517 0,17972973
900000 4,5 0,321428571 0,1875
1000000 4,95 0,32651715 0,172594142
Coste
N Cp (p = 4) Cp (p = 8) Cp (p = 12)
100000 0,004 0,32 0,6
200000 0,04 0,48 1,188
36
300000 0,08 0,8 1,56
400000 0,12 1,2 1,896
500000 0,08 1,36 2,76
600000 0,2 1,68 3
700000 0,2 1,92 3,84
800000 0,12 2,32 4,44
900000 0,2 2,8 4,8
1000000 0,2 3,032 5,736
Encontramos que en casi todos los casos, los algoritmos paralelos se comportan
mejores que los secuenciales, salvo excepciones en MergeSort y HeapSort que el
tiempo de comunicación, de latencia en este caso, fue mayor a lo esperado y se
vio reflejado en la gráfica respectiva de estos algoritmos.
37
Desde el punto de vista de las métricas de desempeño computacional, se ven
reflejados sustancialmente mejoras a nivel de que los algoritmos paralelos logran
más de 2 veces poder cumplir la tarea de los algoritmos secuenciales, salvo la
excepción MergeSort y HeapSort que a nivel de métricas también demuestran un
aumento de los tiempos(Conexión de red paupérrima).
38
3. Bibliografía
39
4. Anexo
Tiempo paralelo
Speedup
El Speedup es una medida de que tan rápido es un algoritmo paralelo comparado con un
algoritmo secuencial, es decir, representa el incremento de velocidad de un algoritmo
paralelo. Se utiliza para comparar cual es el porcentaje de mejora de tiempo al paralelizar
un algoritmo con respecto a su tiempo secuencial.
Eficiencia
Coste
40