Sunteți pe pagina 1din 7

Estudio de algoritmos paralelos de ordenaci on aplicados en

arrays
Cham Chen, Richard
Facultad de Ciencias
UNI
Lima, Per u
Resumen
Con los avances en procesamiento paralelo, se ha intentado mejorar los algoritmos
de ordenacion.
Debido a la vasta variedad de arquitecturas de computadores y problemas por resolver,
existen complejos algoritmos que se ajustan mejor para computadores y aplicaciones
especcas.
En este documento se realizara un analisis comparativo del rendimiento de 2 diferentes
tipos de algoritmos de ordenacion. Quicksort y Mergesort. El analisis comparativo se
basa en estudiar los distintos tiempos que toman los algoritmos para ordenar arrays de
datos, tanto con sus versiones secuenciales como entre ellas mismas. La complejidad
de cada algoritmo de ordenacion sera mencionado y tratado.
Palabras clave: mergesort, quicksort, spee-
dup, aceleracion, paralelo.
1 Introducci on
La ordenacion es una operacion fundamental
realizada por casi todas las computadoras.
El problema de ordenacion, es reubicar una
secuencia de elementos sea ascendentemente o
descendentemente.
Al tener datos ordenados se hace mas facil
el trabajo que con datos aleatoriamente
ubicados. La mayora de programas complejos
contienen alg un tipo de algoritmo de ordena-
cion.
Grandes sistemas de datos obligan a hacer
estos algoritmos de ordenacion mucho mas
ecientes. Es aqu donde se aplica el para-
lelismo para obtener algoritmos mucho mas
ecientes capaces de aprovechar todo el po-
tencial de sistemas computacionales complejos.
Sin embargo, esto no es todo. Algoritmos
muy ecientes teoricamente podran tener un
rendimiento pobre, esto debido a la arquitec-
tura del hardware con la que se trabaja, sobre
todo cuando tratamos con paralelismo, es por
esta razon que se considera una desventaja
del paralelismo, su complejidad para ser
implementadas.
Este trabajo considera Mergesort, y Quick-
1
sort como objetos de estudio debido a que
siempre han mostrado ser rapidos, ademas
de encajar bien en la manera de trabajar de
las actuales arquitecturas multi-core/multi-
thread. Mientras que otros algoritmos clasicos
de ordenacion fueron ignorados al ver que eran
menos ecientes o dedicados a computacion
distribuida.
Estos algoritmos de ordenacion tienden a te-
ner una complejidad de O(nlogn) donde n es el
n umero de datos que se desea ordenar, al apli-
car paralelismo, podemos tener P procesadores
la complejidad resultante sera de O(nlogn)/P.
En el mejor de los casos P=n, resultando en
una complejidad de O(logn). Sin embargo un
algoritmo O(logn)es a un difcil de lograr.
1.1 Trabajos Previos
Se ha dise nado un gran n umero de algorit-
mos de ordenacion hasta la actualidad. Algu-
nas soluciones son dise nados u optimizados pa-
ra ordenar tipos de datos especcos mientras
que otros pueden ordenar cualquier tipo; otros
requieren de un hardware especco mientras
otros pueden ser ejecutados en cualquier ar-
quitectura.
Se han realizado m ultiples implementacio-
nes como el quicksort paralelo de Tsigas-
Zhang[11], o la implementacion de M. Edahi-
ro[2] as tambien como distintos estudios de
rendimiento [4] [5].
2 Ordenaci on paralela
2.1 Map Sort
El Mapsort de M. Edahiro trabaja con una es-
trategia multi-pivote. Un n umero de pivotes di-
viden todo el array en intervalos equidistantes
en el array de entrada y son ordenados seg un
los pivotes.
Luego se cuenta el n umero de elementos en
Figura 1: Mapsort
cada intervalo comparando cada elemento del
array de entrada con cada pivote. El primer
intervalo inicia en la posicion 0 del array de
salida, el segundo intervalo inicia en la poicion
N1, donde N1 es el n umero de elementos en el
primer intervalo, etc.
Despues se mueven los elementos del array de
entrada al de salida uno por uno. Este proceso
agrupa elementos de entrada en intervalos en
el array de salida, donde estos intervalos estan
ordenados.
Finalmente se aplica paralelamente una orde-
nacion secuencial a cada intervalo.
La principal ventaja de Mapsort es la muy e-
ciente particion del problema. Mientras que la
desventaja viene en el requerimiento de espacio
para el array de salida.
2.2 Quicksort
Quicksort es uno de los algoritmos de or-
denacion secuencial mas comunes por su
simplicidad, bajo overhead, y complejidad
promedio optima. Sigue una estrategia Divide
y Conquista, dividir el problema en subpro-
blemas, lo cual le da un enfoque paralelo mas
claro.
Quicksort escoge una de las variables de la se-
cuencia para ser el pivote y divide la secuencia
2
Figura 2: Quicksort paralelo
en 2, una con elementos menores al pivot y
otra con los mayores, y este proceso se aplica
recursivamente a las sublistas resultantes.
El rendimiento del quicksort depende crtica-
mente de la calidad del pivote, en el mejor
caso, el pivote divide la lista de tal manera
que la mas grande de las dos sublistas no tiene
mas de n elementos( constante). En este
caso, la complejidad del quicksort es O(nlogn).
El quicksort paralelo descompone recursi-
vamente la lista, la lista es particionada
serialmente y cada subproblema es manejado
por un diferente procesador, llegando a ser
el lmite inferior (n). Es posible en teora
paralelizar la particion y usar n procesadores
para particionar una lista de tama no n con
un pivote y tiempo O(1). Sin embargo esto es
a un difcil en computadoras reales.
Asumimos un modelo PRAM
CRCW(Concurrent Read Concurrent Write).
Se crean pools de procesadores, a cada pro-
cesador se le asigna el mismo pool al inicio,
y tiene un elemento. Luego cada procesador
intenta escribir su elemento a una ubicacion
com um para el pool. Cada procesador trata
de leer de nuevo la ubicacion. Si lo que lee
es mayor que su valor, se le autoasigna al
pool izquierdo, caso contrario al derecho. Esto
ocure recursivamente y el algoritmo crea un
arbol de pivotes donde esu profundidad es el
tiempo paralelo esperado, cuyo valor promedio
es O(logn).
Quicksort Secuencial
Quicksort(A; p; r)
Si (p < r)
q = Particion(A; p; r)
Quicksort(A; p; q - 1)
Quicksort(A; q + 1; r)
Fin
Particion(A; p; r)
x=A[r]
i= p - 1
Para j=p hasta r-1
Si A[j] x
i=i+1
Intercambia A[i] con A[j]
Intercambia A[i+1] con A[r]
retorna i+1
Asumir p procesadores ordenando n numeros
Cada procesador inicia con n/p numeros guar-
dados en el array x
Quicksort Paralelo
{Asumir p=2
d
}
Si id==0 entonces
Para i=1 hasta p-1 hacer
Recibir n/p numeros del procesador
i y anadirlos a x
Fin para
De lo contrario
Enviar contenido de x al
procesador 0
Fin Si
Particionar los numeros y enviarlos
al procesador adecuado
Para i=0 a d-1 hacer
Si id %(p/2
i
)==0 entonces
3
m x[0]
Dividir x, una sublista de
elementos menores a m y otra
con los mayores
Enviar el array con elementos
mayores de x al procesador
id+p/2
i+1
Reemplazar x por el array no
enviado
De lo contrario
Si id % (p/2
i
) == p/2
i+1
entonces
Reemplazaar x con los numeros
enviados al
procesador id - p/2
i+1
Fin Si
Fin Para
Ordenar localmente al array x
2.3 Mergesort
Al igual que quicksort, mergesort usa una
estrategia Divide y conquistapara ordenar
una lista de datos desordenados. La diferencia
se basa en que mergesort no depende de un
pivote. La lista original es dividida en sublistas
de igual tama no.
El metodo de mergesort consiste en dado
un array de entrada de N elementos y P
procesadores, cada procesador independien-
temente ordena un intervalo de tama no N/P
secuencialmente; para luego ser unidas en
un array de salida. El primer procesador
toma N/P elementos mas peque nos de todos
los intervalos ordenados y los combina en el
intervalo [0...N/P] en el array de salida; el
segundo procesador toma los N/P siguientes y
los combina en el intervalo [N/P....2(N/P)] y
as sucesivamente.
La mayor ventaja de este algoritmo es que la
mayora de operaciones son optimos en el uso
de memoria cache ya que su lectura/escritura
secuencial puede maximizar el uso del harware
prefetching, ademas es poco dependiente de
sincronizaciones y tiene excelente escalabili-
dad.
Figura 3: Mergesort paralelo
Mergesort Secuencial
Merge(A,p,q,r)
n1 = q-p+1
n2 = r-q
Definir L[n1+1] y R[n2+1]
Para i=1 hasta n1 hacer
L[i]=A[p+i-1]
Para j=1 hasta n2 hacer
R[j]=A[q+j]
L[n1]=
R[n2]=
i=1
j=1
Para k=p hasta r hacer
Si L[i] R[j]
A[k]=L[i]
i=i+1
De lo contrario
A[k]=R[j]
j=j+1
Fin Para
4
Asumir p procesadores ordenando n numeros
Cada procesador inicia con n/p numeros guar-
dados en el array x
Mergesort Paralelo
{Asumir p=2
d
}
Realizar ordenaciones locales
en el array x
Para i=d a 1 hacer
Si id % 2
i
== 0 entonces
Recibir array y del procesador
id + 2
i+1
Combinar x e y en el array x
ordenado ascendentemente
De lo contrario
Si id % 2
i
== 2
i+1
entonces
Enviar x al procesador id - 2
i+1
y eliminar x
Fin Si
Fin Para
3 Hardware
El analisis de rendimiento se llevo a cabo
en una computadora con procesador Intel i7-
3630QM, 2.40GHz, 4 cores/8 threads, 2Gb de
memoria y sistema operativo Linux Ubuntu
13.10 de 64-bits.
4 Resultados
. Los algoritmos de ordenacion anteriormente
mencionados fueron implementados en lengua-
je C.
Al ordenar arrays de gran tama no la adminis-
tracion de memoria toma un papel crucial, so-
bre todo al realizar implementaciones parale-
las; es por eso que se hace uso constante de
buers temporales asignados dinamicamente.
Esto debido a la limitacion de memoria cuan-
do son denidos estaticamente y guardados en
el stack.
El uso de demasiados hilos puede causar un
tiempo de proceso adicional, debido al tiempo
que toma el envio de mensajes entre procesa-
dores, a un as se espera un mayor rendimiento
de quicksort conforme aumenta el n umero de
procesadores.
En este experimento se ordenan arrays de en-
teros de longitudes de hasta 10 000 000.
La gura 3 muestra los tiempos en segundos
que le toma al algoritmo quicksort secuencial
y paralelo para ordenar una cantidad de datos
determinada.
Figura 4: Quicksort Secuencial vs Paralelo
La gura 4 muestra los tiempos en segundos
que le toma al algoritmo mergesort secuencial
y paralelo para ordenar una cantidad de datos
determinada
Figura 5: Mergesort Secuencial vs Paralelo
Podemos observar una aceleracion al usar
m ultiples procesadores para resolver el proble-
ma de ordenacion, en ambos casos, sin embar-
go Quicksort llega a resolver los problemas mas
rapido que Mergesort
5
Figura 6: Aceleracion obtenida respecto al al-
goritmo secuencial
5 Conclusiones
El aprovechamiento del paralelismo y multith-
reading aplicados en algoritmos de ordenacion
proveen una aceleracion signicativa, lo que
podra traducirse a mayor trabajo repartido,
mejores resultados.
Al observar a tabla de las aceleraciones obteni-
das podemos concluir que al usar un solo pro-
cesador para los algoritmos paralelos, se tiene
una desaceleracion causada por el tiempo que
toma en realizarse el paso de mensajes entre los
procesadores. Para la misma cantidad de datos
Quicksort tuvo mayor rendimiento comparado
a Mergesort
Referencias
[1] Thomas H. Cormen, Charles E. Lei-
serson, Ronald L. Rivest, and Cliord
Stein,Introduction to Algorithms, 3ra
Ed, London. MIT Press and McGraw-Hill,
2001
[2] M. Edahiro. Parallelizing fundamental al-
gorithms such as sorting on multi-core pro-
cessors for EDA acceleration, Proceedings
of the 2009 Asia and South Pacic De-
sign Automation Conference, pages 230-
233, Yokohama, Japan, 2009.
[3] Davide Pasetto, Albert Akhrievr, A com-
parative Study of Parallel Sort Algo-
rithms, IBM Dublin Research Lab, Ire-
land.
[4] Sanguthevar Rajasekaran, On Parallel In-
teger Sorting, Dept. of Computer and In-
formation Science University of Pennsylva-
nia,.
[5] Ishwari Singh Rajput, Bhawnesh Kumar,
Tinku Singh, Performance Comparison of
Sequential Quick Sort and Parallel Quick
Sort Algorithms, International Journal of
Computer Applications (0975 - 8887) , Vo-
lume 57,2012.
[6] Alaa Ismail El-Nashar,Parallel perfoman-
ce of MPI sorting algorithms on dual-core
processor windows-based systems, Faculty
of Science, Computer Science Department,
Minia University, Egypt Assistant profes-
sor, Department of Computer Science, Co-
llege of Computers and Information Tech-
nology, Taif University, Saudi Arabia.
[7] Manwade K. B., Analysis of Parallel Mer-
ge Sort Algorithm,International Journal
of Computer Applications (0975 - 8887)
Volume 1 - No. 19 , 2010.
[8] D.R Aremu, O.O. Adesina, O.E. Makinde,
O. Ajibola y Agbo-Ajala, A Comparative
Stydu of Sorting Algorithms,African Jour-
nal of Computing and ICT, Vol 6. No. 5,
December 2013 , paginas 200-206.
[9] P. Heidelberger, A. Norton, and J. T. Ro-
binson. Parallel quicksort using Fetch-and-
Add. IEEE Transactions on Computers,
39(1):133-137, January 1990.
[10] Dominik Zurek, Marcin Pietron, Maciej
Wielgosz and Kazimierz Wiatr, The Com-
parison of Parallel Sorting Algorithms Im-
plemented on Dierent Hardware Plat-
forms.
6
[11] P. Tsigas and Y. Zhang. A Simple, Fast
Parallel Implementation of Quicksort and
its Performance Evaluation on SUN Enter-
prise 10000. In Proceedings of the 11th Eu-
romicro Conference on Parallel Distributed
and Network based Processing, pages 372-
384, 2003.
[12] M. J. Quinn, Parallel Programming in C
with MPI and OpenMP, Tata McGraw Hill
Publications, 2003, p. 338.
[13] Abdulrahman Hamed Almutairi and Ab-
dulrahman Helal Alruwaili, Improving of
Quick sort Algorithm performance by Se-
quential Thread or Parallel Algorithms,
Global Journal of Computer Science and
Technology Hardware and Computation
Volume 12 Issue 10 Version 1.0, 2012.
[14] Evans, D.J. and Yousif, N.Y., The Para-
llel Neighbor Sort and Two-way Merge Al-
gorithm, Parallel Computing 3, (1986), 85-
90.
[15] Qin M., Merge Sort Algorithm, Depart-
ment of Computer Sciences, Florida Insti-
tute of Technology, Melbourne, FL 32901.
7

S-ar putea să vă placă și