Paradigmas de Computação Paralela

Slides:



Advertisements
Apresentações semelhantes
Estratégias Pipelined
Advertisements

Conceitos de Programação Paralela
Amintas engenharia.
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Medição do desempenho Computacional
Rational Unified Process
Barramentos Introdução.
INVESTIGAÇÃO OPERACIONAL
MPI – Comunicações Com. Colectiva esquecida Barrier não há troca de dados, apenas sincroniza os processos int MPI_Barrier( MPI_Comm, comm) T com = T lat.
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
ARQUITETURA DE COMPUTADORES II
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Avaliação de Desempenho de Sistemas Operacionais
Avaliação de Desempenho Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Marcos José
Fundamentos de Economia
Rganização de Computadores Multiprocessadores Capítulo 9 – Patterson & Hennessy Organização de Computadores Multiprocessadores Capítulo 9 – Patterson &
Programação Concorrente
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
ESTRUTURA DE COMUNICAÇÃO DE DADOS
List Ranking: Um Estudo Experimental
Experiments with Strassen’s Algorithm: from sequential to parallel
Balanceamento de Linhas
Paulo J. Azevedo Departamento de Informática Universidade do Minho
© 2000, António Esteves - Seminários de Ciências da Computação, UM-DI 1 Seminários de Ciências da Computação Partição de Sistemas Digitais em Componentes.
AC1 – Previsão do Desempenho1 Previsão do Desempenho.
Avaliação do Desempenho
Optimização do Desempenho: Técnicas Independentes da Máquina Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos.
Classes e objetos Modelagem
Sistemas Operacionais I
ESTATÍSTICA: O estudo numérico dos fatos sociais
Protocolo CMB em simulação distribuída
Sistemas de Aquisição e Processamento de Dados
Comunicação Inclusiva Acessibilidade e Programação Web
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
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.
Arquitetura de computadores
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
ÍNDICES DE CARGA E DE DESEMPENHO SSC-642 SISTEMAS COMPUTACIONAIS DISTRIBUÍDOS.
Sistemas Distribuídos
Sistema de equações lineares
Gerenciamento de Redes Utilizando Agentes Móveis
Universidade de Mogi das Cruzes Tec
SISTEMAS OPERACIONAIS I
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
SISTEMAS OPERACIONAIS I
Experimentação Algorítmica
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Métodos de Computação Paralela em Álgebra Linear Mestrado em Matemática Computacional Universidade do Minho.
Sistemas Operacionais
Integração de Ferramentas CASE
Recursividade Profs. De Prog2 e Lab2.
Analise de Algoritmos e Notação Assintótica
Gestão da Carga em Sistemas Distribuídos : Algumas Considerações Luís Paulo Peixoto dos Santos Departamento de Informática Universidade do Minho.
Sistemas de Arquivos Paralelos Alternativas para a redução do gargalo no acesso ao sistema de arquivos Roberto Pires de Carvalho carvalho arroba ime ponto.
Circuitos Elétricos 2 Circuitos Elétricos Aplicados
Conceitos de Monitoramento
CÁLCULO NUMÉRICO Aula 5 – Sistema de Equações lineares.
Scalable Grid Application Scheduling via Decoupled Resource Selection and Scheduling VLADIMIR GUERREIRO Publicado em: IEEE International Symposium, 2006.
Arquitetura de computadores
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Projetar Processos. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar distribuição | 2 Descrição do Projeto.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Sistemas de equações lineares MCEF 2011/12. O Sistemas lineares constituem um caso particular dos sistemas não lineares, sendo que os métodos estudados.
Escalonamento de Operações de Reconfiguração Dinâmica Mestrado Integrado em Engenharia Eletrotécnica e de Computadores Aluno: Ricardo Ferreira Orientador:
Comportamento Assintótico
Transcrição da apresentação:

Paradigmas de Computação Paralela Medição e Optimização de Desempenho João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Abril 2009

Desempenho de Aplicações Paralelas/Distribuídas A análise do desempenho da aplicação, através de modelos de desempenho, possibilita a comparação de algoritmos, análise de escalabilidade e a identificação de estrangulamentos nas aplicações, antes de investir um esforço substancial na implementação Qual a definição de desempenho? Existem múltiplas alternativas: tempo de execução, eficiência, escalabilidade, requisitos de memória, débito, latência, custos de projecto, desenvolvimento e implementação, requisitos memória e de hardware em geral, portabilidade, potencial de reutilização, etc. Geralmente o peso de cada um dos elementos anteriores varia de aplicação para aplicação. Lei de Amdahl Se um algoritmo paralelo tiver um componente sequencial, esse componente irá limitar os ganhos proporcionados por uma execução paralela: se s for a fracção sequencial do algoritmo então o ganho máximo que pode ser obtido com esse algoritmo é 1/s. Esta lei reforça a ideia de que se devem preferir os algoritmos com um grau superior de paralelismo: think parallel. Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Modelo de desempenho Um modelo de desempenho deve explicar as observações disponíveis e prever circunstâncias futuras, sendo geralmente definido como uma função da dimensão do problema, do número de processadores, do número de tarefas, etc. O tempo de execução de um programa pode ser definido como o tempo que decorre desde que o primeiro processador inicia a execução até o último processador terminar. O tempo de execução pode ser decomposto no tempo de computação, de comunicação e no tempo de ócio: Texec = Tcomp + Tcomn + Tócio O tempo de computação é o tempo despendido na computação, excluindo o tempo de comunicação e de ócio. Quando existe uma versão sequencial do algoritmo esta pode ser utilizada para estimar Tcomp. O tempo de ócio é de medição bastante mais complexa, uma vez que depende da ordem pela qual são realizadas as operações. O tempo de ócio surge quando um processador fica sem tarefas, podendo ser minimizado com uma distribuição de carga adequada ou sobrepondo a computação com a comunicação. Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Modelo de desempenho (cont.) O tempo de comunicação é o tempo que o algoritmo despende a enviar e receber mensagens. Podendo ser calculado através da latência (ts) e do débito da comunicação (1/tw). O tempo necessário para a transmissão de uma mensagem de L palavras pode ser aproximado por: Tmens = ts + twL Adicionalmente, se existir partilha do débito da comunicação pode ser introduzido um factor que modela essa competição, por exemplo, se o débito for dividido pelo número de processadores temos: Tmens = ts + twLP ts e tw podem ser obtidos experimentalmente, através de um teste de ping-pong e de uma regressão linear. Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Modelo de desempenho - Exemplo Tempo de execução de cada iteração no método de Jacobi, assumindo uma matriz de NxN em P processadores e uma partição em colunas, N/P colunas por processador. Tcomp = operações por ponto x nº de pontos por processador x tc = 6 x (N x N/P) x tc (tc = tempo de uma operação) = 6tcN2/P Tcomn = mensagens por ponto x tempo para cada mensagem = 2 x (ts + twN) Tócio = 0 , uma vez que este problema é balanceado Texec = Tcomp + Tcomn + Tócio = 6tcN2/P + 2ts + 2twN = O(N2/P+N) Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Modelo de desempenho – Exemplo (cont.) O tempo de execução pode não ser o mais indicado para avaliar o desempenho. O ganho e a eficiência são duas medidas relacionadas. O ganho (G) indica o factor de redução do tempo de execução proporcionado por P processadores, sendo dado pelo quociente entre o tempo de execução do melhor algoritmo sequencial e o tempo de execução do algoritmo paralelo. G = Tseq / Tpar, A eficiência (E) indica a facção de tempo em que os processadores efectuam trabalho útil: E = Tseq / (P x Tpar) Exemplo para o caso do método de Jacobi: G = E = Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Análise da Escalabilidade As expressões do tempo de execução e da eficiência podem ser utilizadas para efectuar uma análise qualitativa do desempenho. Por exemplo, podem ser efectuadas as seguintes observações relativamente ao método de Jacobi: O tempo de execução diminui com o aumento do número de processadores, mas está limitado pelo tempo necessário para a troca de duas colunas da matriz entre processadores; O tempo de execução aumenta com N, tc, ts e tw; Texe = 6tcN2/P + 2ts + 2twN A eficiência diminui com aumentos de P, ts e tw; A eficiência aumenta com aumentos de N e de tc. Escalabilidade de problemas de dimensão fixa. Analisa as variações de Texec e de E em função do número de processadores. Em geral, E decresce de forma monótona, podendo Texec vir a crescer, se o modelo de desempenho incluir uma parcela proporcional a uma potência positiva de P. Escalabilidade de problemas de dimensão variável. Por vezes pretende‑se resolver problemas de maior dimensão, mantendo a mesma eficiência, ou mantendo o mesmo tempo de execução ou utilizando a memória disponível. A função de isoeficiência indica qual o aumento necessário na dimensão do problema para que a eficiência permaneça constante, quando se aumenta o número de processadores. Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Análise da Escalabilidade (cont) Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Análise da Escalabilidade (cont) Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Análise da Escalabilidade (cont) Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Análise da Escalabilidade (cont) Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Estudo experimental e avaliação das implementações A computação paralela tem uma forte componente experimental, uma vez que geralmente os problemas são demasiado complexos para que uma realização apenas baseada em teoria possam ser eficiente. Adicionalmente, os modelos de desempenho devem ser calibrados com resultados experimentais, por exemplo para determinar tc. Um dos principais problemas do estudo experimental é garantir que são obtidos resultados precisos e reprodutíveis. Nomeadamente, devem ser realizadas várias medições e deve-se verificar se o relógio tem resolução e precisão suficientes. Geralmente os resultados não podem variar mais do que um pequeno montante: 2 – 3%. Os vários tempos de execução podem ser obtidos recolhendo o perfil de execução (p.ex., contadores do número de mensagens, volume de informação transmitido e dos vários tempos de execução), o que pode ser efectuado através da inserção de código específico ou de ferramentas próprias. Note-se que existe sempre alguma intrusão provocada por este código ou ferramentas. Por vezes ocorrem anomalias no ganho, podem este ser superlinear (i.é., superior ao número de processadores), o que pode ser derivado do efeito das caches. Computação Paralela

Desempenho de Aplicações Paralelas/Distribuídas Técnicas de avaliação do perfil de execução das aplicações (profiling) Sondagem: A aplicação é periodicamente interrompida para recolher informação estatística sobre a execução Instrumentação: É introduzido código (pelo programador ou pelas ferramentas) na aplicação para recolha de informação sobre os vários eventos. A técnica de instrumentação tende a produzir melhores resultados mas também tende a causar mais interferência nos tempos de execução Computação Paralela

Medição e Optimização de desempenho Exercícios Testar a aplicação com vários pacotes de números e só um filtro/ vários filtros Instrumentar o código para medir o tempo de cada invocação (e soma por filtro) Comparar a versão Farming com Pipeline Utilizar java -agentlib:hprof=cpu=samples xxxx para recolher o perfil de execução das duas versões Efectuar a invocação do método filter num novo fio de execução public class AsyncCall extends Thread { int[] nm; PrimeFilter pf; public AsyncCall(PrimeFilter p,int []n) { … } // copiar parâmetros para as variáveis locias } public void run() { … } // invocar o método Analisar a escalabilidade do algoritmo numa das máquinas Xeon do cluster Testar 1, 2, 4 e 8 servidores e efectuar várias medições (scp fich user@search3.di.uminho.pt) Analisar a escalabilidade incluindo código de distribuição Computação Paralela