algoritmos paralelos eficientes para alguns problemas de processamento de cadeia de caracteres...
TRANSCRIPT
![Page 1: Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062312/552fc13b497959413d8d8ffe/html5/thumbnails/25.jpg)
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