A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant."— Transcrição da apresentação:

1 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

2 Conteúdo Processamento Paralelo Arquiteturas de Computadores Paralelos Paradigmas de Programação Conclusões

3 O que é Processamento Paralelo? Execução simultânea (concorrente) de vários programas, em diferentes processadores, visando a solução de um único problema

4 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

5 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

6 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

7 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

8 Por que preciso Programar em Paralelo? (II) A programação paralela pode ser dividida em duas etapas Encontrar o paralelismo Explorar o paralelismo

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

10 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

11 Forma de um Programa Paralelo Inicialização Tarefa 1 Tarefa 2 Tarefa 3 Divisão das Tarefas Coleta Fim

12 Rodada de Computação/Comunicação

13 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

14 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

15 Exemplos de Decomposição de Dados Cálculo da área sob uma curva Tarefas independentes!

16 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

17 Sincronismo e Comunicação Processos devem cooperar entre si Troca de dados deve ser feita na ordem correta Sincronismo é necessário!

18 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

19 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

20 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

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

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

23 Exemplo 3

24

25 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


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

Apresentações semelhantes


Anúncios Google