Você está na página 1de 25

Algoritmos Paralelos - ordenao

Fernando Silva
DCC-FCUP
(Alguns dos slides so baseados nos do livro Parallel Programming Techniques &
Applications Using Networked Workstations & Parallel Computers, 2nd ed. de B.
Wilkinson)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 1 / 25
Ordenao em Paralelo
Porqu?
uma operao frequente em muitas aplicaes
Objectivo?
ordenar uma sequncia de nmeros (valores) por ordem crescente
usando n processadores
Speedup potencial?
melhor algoritmo sequencial tem complexidade O(n log n)
o melhor a que podemos aspirar com um algoritmo paralelo, usando n
processadores :
complexidade ptima do algoritmo paralelo: O(n log n)/n = O(log n)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 2 / 25
Comparao-e-troca com troca de mensagens (1/2)
A ordenao sequencial requer a comparao de valores e a sua permuta
nas posies que ocupam na sequncia. E se for em paralelo? E se a
memria for distribuda?
verso 1:
P
1
envia A para P
2
, este compara B com A e envia para P
1
o
min(A, B).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 3 / 25
Comparao-e-troca com troca de mensagens (2/2)
verso 2:
P
1
envia A para P
2
; P
2
envia B para P
1
; P
1
faz A = min(A, B) e P
2
faz B = max(A, B).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 4 / 25
Partio de dados
Verso 1:
n nmeros e p processadores
n/p nmeros atribudos a cada processador.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 5 / 25
Juno de duas sub-listas
verso 2:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 6 / 25
Bubble Sort (mtodo da bolha)
compara dois a dois e troca se estiverem fora de ordem.
maiores valores vo sendo deslocados para o nal da lista.
nmero de comparaes e trocas:

n1
i =1
i =
n(n1)
2
o que corresponde a uma complexidade O(n
2
).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 7 / 25
Exemplo bubble-sort
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 8 / 25
Bubble Sort Paralelo
Ideia ter vrias iteraes a correr em paralelo.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 9 / 25
Par-mpar com transposio (1/2)
uma variante do bubble-sort
opera em duas fases alternadas:
Fase-par:

os processos par trocam nmeros com os seus vizinhos direitos.


Fase-mpar:

os processos mpar trocam nmeros com os seus vizinhos direitos.


Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 10 / 25
Par-mpar com transposio (2/2)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 11 / 25
Algoritmo paralelo - Par-mpar com transposio
void ODD-EVEN-PAR(n)
{
id = process label
for (i= 1; i<= n; i++) {
if (i mpar)
if (id for mpar)
compara-e-troca-min(id+1);
else
compara-e-troca-max(id-1);
if (i par)
if (id for par)
compara-e-troca-min(id+1);
else
compara-e-troca-max(id-1);
}
}
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 12 / 25
Mergesort (1/2)
Exemplo de um algoritmo divide-and-conquer
Mtodo de ordenao em que para ordenar um vector, subdivide-o em
duas partes, aplica novamente o mtodo a cada uma das partes e
quando estas estiverem ordenadas (2 vectores ordenados) com m e n
elementos, faz-se a juno para produzir um vector ordenado que
contm os m + n elementos do vector inicial.
A complexidade , em mdia, O(n log n).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 13 / 25
Mergesort em paralelo (2/2)
Usando uma atribuio de trabalho a processos em rvore.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 14 / 25
Quicksort em paralelo
Usando uma atribuio de trabalho a processos em rvore.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 15 / 25
Problemas com a alocao de processos em rvore
a diviso inicial inicia-se com apenas um processo, o que logo
limitador.
no quicksort, em geral a rvore de processos no ser balanceada
seleco do pivot muito importante para que possa ser eciente.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 16 / 25
Odd-Even mergesort
complexidade: O(log
2
n)
juno de duas listas a
1
, a
2
, . . . , a
n
e b
1
, b
2
, . . . , b
n
, onde n uma
potncia de 2.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 17 / 25
Odd-Even mergesort
Aplicar recursivamente odd-even merge:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 18 / 25
Bitonic Sort (1/7)
complexidade: O(log
2
n)
uma sequncia bitnica se contm duas sequncias, uma crescente e
outra decrescente, i.e.
a
1
< a
2
< . . . < a
i 1
< a
i
> a
i +1
> a
i +2
> . . . > a
n
para algum i t.q. (0 i n)
uma sequncia bitnica se a propriedade descrita for conseguida por
rotao circular para a direita dos seus elementos.
Exemplos:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 19 / 25
Bitonic Sort (2/7)
Caracterstica especial das sequncias bitnicas:
se zermos a operao comparar-e-trocar com os elementos a
i
e
a
i +n/2
, para todo o i, numa sequncia de tamanho n,
obtemos duas sequncias bitnicas, em que os nmeros de uma
sequncia so todos menores que os da outra sequncia.
Exemplo: comeamos com a sequncia 3, 5, 8, 9, 7, 4, 2, 1 e
obtemos:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 20 / 25
Bitonic Sort (3/7)
a operao compara-e-troca desloca valores menores para a esquerda
e maiores para a direita.
dada uma sequncia bitnica, aplicando recursivamente estas
operaes obtemos uma lista ordenada.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 21 / 25
Exemplo Bitonic Sort (4/7)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 22 / 25
Bitonic Sort (5/7)
Para ordenar uma sequncia no ordenada
juntar sequncias em sequncias bitnicas maiores, comeando com
pares de nmeros adjacentes, alternando monotonicidade.
e no nal, a sequncia bitnica ordenada numa nica sequncia
crescente.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 23 / 25
Bitonic Sort (6/7)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 24 / 25
Bitonic Sort (7/7)
Sequncia no ordenada sequncia bitnica sequncia ordenada.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenao 25 / 25

Você também pode gostar