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

Slides:



Advertisements
Apresentações semelhantes
Conceitos de Programação Paralela
Advertisements

Metodologia de testes Nome: Gustavo G. Quintão
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Noções de Sistemas Operacionais
UNIVERSIDADE LUTERANA DO BRASIL COMUNIDADE EVANGÉLICA LUTERANA SÃO PAULO Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89 Campus.
Mineração de Dados Avaliação de Classificadores
ARQUITETURA DE COMPUTADORES II
Sinais e Sistemas – Capítulo 4
INTRODUÇÃO A INFORMÁTICA
Introdução à Computação - Jorge Macêdo
Medida do Tempo de Execução de um Programa
Reconhecimento de Padrões Seleção de Características
Medida do Tempo de Execução de um Programa
Recursividade Conceitos e Aplicações.
Complexidade de Algoritmos
Linguagens de Programação
ESTRUTURA DE COMUNICAÇÃO DE DADOS
Threads.
Davyd Bandeira de Melo Um Sistema de Reconhecimento de Comandos de Voz Utilizando a Rede Neural ELM Junho 2011.
Processamento da Informação BC-05045
Protocolo CMB em simulação distribuída
Informática Teórica Engenharia da Computação
Gerenciando Grandes Modelos (aula 10)
Linguagem de Programação IV
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
Arquitetura de computadores
Algoritmos e Programação I
Desenvolvimento de Jogos e Entretenimento Digital
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Memória virtual Professor Esp. Diego André Sant’Ana
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
Paradigmas de Projetos de Algoritmos
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
ARQUITETURA DE COMPUTADORES II
ARQUITETURA DE COMPUTADORES II
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
SGBD Distribuído Lílian Simão Oliveira.
Experimentação Algorítmica
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Estimativas de Custos e Orçamentação
Simulação distribuída e paralela Gabriel Baracuhy Thiago Martins.
O Problema O Cenário Atual A Solução Impacto da Solução O Cenário Futuro Produtos Desenvolvidos Demonstrações.
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
Processamento de Alto Desempenho Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
A maior parte dos programas de computador gera uma saída resultante de um processamento que é executado sobre dados que ele recebe como entrada. Em geral.
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Etapas : Algoritmo é uma sequência lógica de instruções que podem ser executadas. É importante destacar que qualquer tarefa que siga um certo padrão.
Aula – Sistemas Operacionais
Linguagem Técnica de Programação
Algoritmos e Programação I
Scalable Grid Application Scheduling via Decoupled Resource Selection and Scheduling VLADIMIR GUERREIRO Publicado em: IEEE International Symposium, 2006.
Algoritmos Paralelos.
Sistemas Operacionais
Introdução à lógica de programação
Projetos em andamento e em perspectiva Aleardo Manacero Jr. DCCE/IBILCE/UNESP.
Exercícios Faça um algoritmos para trocar uma lampada queimada.
Arquitetura de computadores
Projetar Processos. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar distribuição | 2 Descrição do Projeto.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
TÉCNICAS DE ESTIMATIVAS
Por Cássio Mello e André Luis.  É a parte inteligente do circuito, onde sinais de controle serão recebidos e enviados e o processamento será efetuado.
Sistemas Distribuídos Introdução a Sistemas Distribuídos São Paulo, 2011 Universidade Paulista (UNIP) Programação.
Escalonamento de Operações de Reconfiguração Dinâmica Mestrado Integrado em Engenharia Eletrotécnica e de Computadores Aluno: Ricardo Ferreira Orientador:
Lógica de programação Introdução à lógica de programação
Linux Mint Trabalho realizado por: Luís Oliveira 11ºitm nº24.
Transcrição da apresentação:

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

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

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