Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres...

25
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant Leonardo Gomes de Oliveira

Transcript of Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres...

Page 1: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Algoritmos paralelos eficientes para alguns problemas de processamento de

Cadeia de Caracteres

Alunos:Diego Alencar dos Santos MeloFelipe Formagini BrantLeonardo Gomes de Oliveira

Page 2: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Conteúdo

Processamento Paralelo

Arquiteturas de Computadores Paralelos

Paradigmas de Programação

Conclusões

Page 3: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

O que é Processamento Paralelo?

Execução simultânea (concorrente) de vários programas, em diferentes processadores, visando a solução de um único problema

Page 4: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Por que Usar Programação Paralela?

Algumas classes de problemas:

Grandes demais para máquinas seqüenciais – tempo de execução muito longo

Os resultados somente são úteis se obtidos dentro de um limite máximo de tempo

Page 5: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Vantagens da Computação Paralela

Computação mais rápida

Melhor relação custo/benefício

Escalabilidade: o desempenho de um programa melhora se ele for executado em mais processadores

Page 6: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Validação dos Resultados fornecidos pela Computação Paralela

Resultados obtidos devem ser os mesmos:

a cada execução do código paralelo

quando comparados com aqueles obtidos na versão seqüencial do programa

Page 7: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Por que preciso Programar em Paralelo?

Não existem ferramentas de auxílio ao desenvolvimento de programas paralelos que

identifiquem automaticamente o paralelismo de aplicações genéricas

gerem código eficiente para as mesmas

Page 8: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Por que preciso Programar em Paralelo? (II)

A programação paralela pode ser dividida em duas etapas

Encontrar o paralelismo

Explorar o paralelismo

Page 9: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Determinando Paralelismo

É a parte mais difícil Uma dica: como você faria para distribuir sua

aplicação entre vários trabalhadores? A sutileza do que você procura é a razão pela qual

o compilador não pode fazer a paralelização por você!

Page 10: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Explorando Paralelismo

Para explorar o paralelismo, deve-se distribuir a carga computacional entre os diferentes processadores

A melhor forma de se fazer isso depende da natureza da aplicação e da arquitetura do computador paralelo usado: mapeamento => eficiência

Page 11: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Forma de um Programa Paralelo

Inicialização

Tarefa 1

Tarefa 2

Tarefa 3

Divisão das Tarefas

Coleta

Fim

Page 12: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Rodada de Computação/Comunicação

Page 13: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Controle Explícito do Paralelismo

O programador decompõe o problema em tarefas independentes: Decomposição de dados

Decomposição de controle O programador codifica explicitamente o

controle entre os processos

Page 14: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Decomposição de Dados

Os dados do problema são particionados entre os diferentes processadores

Cada processador executa basicamente o mesmo código, só que sobre dados diferentes

Page 15: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Exemplos de Decomposição de Dados

Cálculo da área sob uma curva

Tarefas independentes!

Page 16: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Vantagens da Decomposição de Dados

Pode-se dividir o domínio de forma a que todos os processadores realizem a mesma quantidade de computação

Muitos problemas exigem comunicação entre as tarefas somente nas fronteiras dos subdomínios de dados

Page 17: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Sincronismo e Comunicação

Processos devem cooperar entre si

Troca de dados deve ser feita na ordem correta

Sincronismo é necessário!

Page 18: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Medindo o Desempenho do Programa Paralelo

Quando se desenvolve uma aplicação paralela, é útil sabermos o quanto seu desempenho se aproxima do ótimo

Essa valor teórico é função: da fração seqüencial f do código do nº de processadores, n

Page 19: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Medindo o Desempenho do Programa Paralelo (II)

A diferença entre o valor “ideal” e o valor obtido na prática aumenta com o aumento do nº de processadores

Para todo programa paralelo, há um valor de n acima do qual não compensa ir

Page 20: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Medindo o Desempenho do Programa Paralelo (III)

No mundo real, o overhead causado pela comunicação entre processadores chega até a reduzir o speedup após certos valores de n

Speedup: Quantas vezes o código paralelo fica mais rápido (que sua versão seqüencial) com o nº de processadores utilizados

Page 21: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Exemplo

Localizar a sequência que possui soma máxima.

Page 22: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Exemplo

Divide as tarefas para os n processadores, de forma que apenas o último poderá conter um número diferente dos demais.

Page 23: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Exemplo

3

Page 24: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Exemplo

3

15 12

Page 25: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.

Conclusões

Computação paralela é a forma mais acessível de se resolver problemas que exigem muita computação

Está se difundindo cada vez mais pela queda no custo dos componentes eletrônicos