Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos -...
Transcript of Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos -...
Algoritmos Paralelos - ordenação
Fernando Silva
DCC-FCUP
(Alguns dos slides são baseados nos do livro “Parallel Programming Techniques &Applications Using Networked Workstations & Parallel Computers, 2nd ed.” de B.Wilkinson)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 1 / 25
Ordenação em Paralelo
Porquê?é uma operação frequente em muitas aplicações
Objectivo?ordenar uma sequência de números (valores) por ordem crescenteusando n processadores
Speedup potencial?melhor algoritmo sequencial tem complexidade O(n log n)
o melhor a que podemos aspirar com um algoritmo paralelo, usando nprocessadores é:complexidade óptima do algoritmo paralelo: O(n log n)/n = O(log n)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 2 / 25
Comparação-e-troca com troca de mensagens (1/2)
A ordenação sequencial requer a comparação de valores e a sua permutanas posições que ocupam na sequência. E se for em paralelo? E se amemória for distribuída?versão 1:
P1 envia A para P2, este compara B com A e envia para P1 omin(A, B).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 3 / 25
Comparação-e-troca com troca de mensagens (2/2)
versão 2:P1 envia A para P2; P2 envia B para P1; P1 faz A = min(A, B) e P2faz B = max(A, B).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 4 / 25
Partição de dados
Versão 1:n números e p processadoresn/p números atribuídos a cada processador.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 5 / 25
Junção de duas sub-listas
versão 2:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 6 / 25
Bubble Sort (método da bolha)
compara dois a dois e troca se estiverem fora de ordem.maiores valores vão sendo deslocados para o final da lista.número de comparações e trocas:
∑n−1i=1 i = n(n−1)
2
o que corresponde a uma complexidade O(n2).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 7 / 25
Exemplo bubble-sort
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 8 / 25
Bubble Sort Paralelo
Ideia é ter várias iterações a correr em paralelo.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 9 / 25
Par-Ímpar com transposição (1/2)
é uma variante do bubble-sortopera em duas fases alternadas:
Fase-par:I os processos par trocam números com os seus vizinhos direitos.
Fase-ímpar:I os processos ímpar trocam números com os seus vizinhos direitos.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 10 / 25
Par-Ímpar com transposição (2/2)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 11 / 25
Algoritmo paralelo - Par-Ímpar com transposição
void ODD-EVEN-PAR(n){
id = process labelfor (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);
elsecompara-e-troca-max(id-1);
}} Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 12 / 25
Mergesort (1/2)
Exemplo de um algoritmo divide-and-conquerMétodo de ordenação em que para ordenar um vector, subdivide-o emduas partes, aplica novamente o método a cada uma das partes equando estas estiverem ordenadas (2 vectores ordenados) com m e nelementos, faz-se a junção para produzir um vector ordenado quecontém os m + n elementos do vector inicial.A complexidade é, em média, O(n log n).
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 13 / 25
Mergesort em paralelo (2/2)
Usando uma atribuição de trabalho a processos em árvore.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 14 / 25
Quicksort em paralelo
Usando uma atribuição de trabalho a processos em árvore.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 15 / 25
Problemas com a alocação de processos em árvore
a divisão inicial inicia-se com apenas um processo, o que é logolimitador.no quicksort, em geral a árvore de processos não será balanceadaselecção do pivot é muito importante para que possa ser eficiente.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 16 / 25
Odd-Even mergesort
complexidade: O(log 2n)
junção de duas listas a1, a2, . . . , an e b1, b2, . . . , bn, onde n é umapotência de 2.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 17 / 25
Odd-Even mergesort
Aplicar recursivamente odd-even merge:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 18 / 25
Bitonic Sort (1/7)
complexidade: O(log 2n)
uma sequência é bitónica se contém duas sequências, uma crescente eoutra decrescente, i.e.a1 < a2 < . . . < ai−1 < ai > ai+1 > ai+2 > . . . > anpara algum i t.q. (0 ≤ i ≤ n)
uma sequência é bitónica se a propriedade descrita for conseguida porrotação circular para a direita dos seus elementos.Exemplos:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 19 / 25
Bitonic Sort (2/7)
Característica especial das sequências bitónicas:se fizermos a operação comparar-e-trocar com os elementos ai eai+n/2, para todo o i, numa sequência de tamanho n,obtemos duas sequências bitónicas, em que os números de umasequência são todos menores que os da outra sequência.Exemplo: começamos com a sequência 3, 5, 8, 9, 7, 4, 2, 1 eobtemos:
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 20 / 25
Bitonic Sort (3/7)
a operação compara-e-troca desloca valores menores para a esquerdae maiores para a direita.dada uma sequência bitónica, aplicando recursivamente estasoperações obtemos uma lista ordenada.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 21 / 25
Exemplo Bitonic Sort (4/7)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 22 / 25
Bitonic Sort (5/7)
Para ordenar uma sequência não ordenadajuntar sequências em sequências bitónicas maiores, começando compares de números adjacentes, alternando monotonicidade.e no final, a sequência bitónica é ordenada numa única sequênciacrescente.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 23 / 25
Bitonic Sort (6/7)
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 24 / 25
Bitonic Sort (7/7)
Sequência não ordenada ⇒ sequência bitónica ⇒ sequência ordenada.
Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 25 / 25