Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos -...

25
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

Transcript of Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos -...

Page 1: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 2: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 3: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 4: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 5: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 6: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Junção de duas sub-listas

versão 2:

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 6 / 25

Page 7: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 8: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Exemplo bubble-sort

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 8 / 25

Page 9: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Bubble Sort Paralelo

Ideia é ter várias iterações a correr em paralelo.

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 9 / 25

Page 10: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 11: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Par-Ímpar com transposição (2/2)

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 11 / 25

Page 12: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 13: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 14: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 15: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Quicksort em paralelo

Usando uma atribuição de trabalho a processos em árvore.

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 15 / 25

Page 16: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 17: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 18: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Odd-Even mergesort

Aplicar recursivamente odd-even merge:

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 18 / 25

Page 19: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 20: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 21: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 22: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Exemplo Bitonic Sort (4/7)

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 22 / 25

Page 23: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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

Page 24: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

Bitonic Sort (6/7)

Fernando Silva (DCC-FCUP) Algoritmos Paralelos - ordenação 24 / 25

Page 25: Algoritmos Paralelos - ordenaçãoricroc/aulas/1011/ppd/apontamentos/... · Algoritmos Paralelos - ordenação FernandoSilva ... Comparação-e-troca com troca de mensagens (1/2)

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