algoritmos paralelos eficientes para alguns problemas de processamento de cadeia de caracteres...

Post on 18-Apr-2015

111 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Algoritmos paralelos eficientes para alguns problemas de processamento de

Cadeia de Caracteres

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

Conteúdo

Processamento Paralelo

Arquiteturas de Computadores Paralelos

Paradigmas de Programação

Conclusões

O que é Processamento Paralelo?

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

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

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

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

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

Por que preciso Programar em Paralelo? (II)

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

Encontrar o paralelismo

Explorar o paralelismo

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ê!

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

Forma de um Programa Paralelo

Inicialização

Tarefa 1

Tarefa 2

Tarefa 3

Divisão das Tarefas

Coleta

Fim

Rodada de Computação/Comunicação

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

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

Exemplos de Decomposição de Dados

Cálculo da área sob uma curva

Tarefas independentes!

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

Sincronismo e Comunicação

Processos devem cooperar entre si

Troca de dados deve ser feita na ordem correta

Sincronismo é necessário!

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

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

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

Exemplo

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

Exemplo

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

Exemplo

3

Exemplo

3

15 12

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

top related