Introdução à Computação de Alto Desempenho - Parte II

Embed Size (px)

DESCRIPTION

Introdução à Computação de Alto Desempenho. Essa apresentação foi usada como base para uma aula de Sistemas Distribuídos ministrada na FURG. Pode servir como introdução ao tema. Para mais informações sobre o assunto consultar as referências ao final da apresentação. Nas minhas apresentações aqui no slideshare existe a parte I que aborda conceitos complementares. Embora não exista uma dependência rígida entre as duas apresentações é recomendável visualizar a parte 1 primeiro. O endereço da parte 1 é: http://www.slideshare.net/viniciushax/introduo-computao-de-alto-desempenho

Citation preview

  • 1. Introduo Computao de Alto Desempenho pt IIVincius Alves Hax Sistemas Distribudos - FURG Dezembro de 2012

2. Sobre mimEngenheiro de ComputaoEspecialista em Aplicaes para a WebAluno Mestrado Engenharia deComputaoAnalista de Tecnologia de Informao (FURG)Empreendedor (Zetaflops)Interesses: Software Livre, Linux, Metodologiasgeis, Rails, Computao de Alto Desempenho,Internet das Coisas, Governo Eletrnico, Web2 3. Computao de Alto Desempenho praticamenteum sinnimo de Computao Paralela 3 4. Por que paralelizar?Economizar tempo e/ou dinheiroResolver problemas grandes que no caberiam namemria de um nico computadorConcorrnciaRecursos no locais 4 5. 5 6. 6 7. Conceitos importantesTarefaPipelineMemria compartilhadaSymmetric Multi-Processor (SMP)SincronizaoSpeedup Observado Tempo programa serial / Tempo programa paralelo7 8. Overhead por paralelizaoTempo de inicializao de tarefasSincronizaoComunicao de dadosOverhead por bibliotecas de softwareTempo de trmino de tarefasMassivamente paraleloSistema com muitos processadores 8 9. EscalabilidadeCapacidade de um sistema aumentar o speedupproporcionalmente ao incremento de processadoresEmbaraosamente paraleloSolving many similar, but independent taskssimultaneously; little to no need for coordinationbetween the tasks. 9 10. Desenvolvendo programas paralelos10 11. Automtica VS ManualGeralmente a paralelizao feita manualmenteLeva tempoSujeita a errosCompilador paralelo pode ser de dois tiposAutomtico Laos so os elementos mais paralelizadosSemi-automtico (diretivas de compilao) Pode ser usado em conjunto com mtodos automticosProblemas da automatizaoPode produzir errosA performance pode piorarGeralmente se limita aos laos de repetio11 12. Dicas de paralelizao manual12 13. Entender bem o problema e se existir um cdigoserial entend-lo tambmDescobrir se o problema paralelizvelIdentificar os pontos crticos do cdigoParalelizar primeiro os trechos de cdigo queconsomem mais tempo de CPUUtilizar ferramentas de anlise de cdigoIdentificar gargalos do sistemaQuais pontos que podem fazer o programa executarmais lentamente? (Ex: I/O)Mudar o programa ou algoritmo para evitar essas reas13 14. Identificar inibidores de paralelismo (Ex: dependnciade dados)Verificar algoritmos alternativosUtilizar quando possvel bibliotecas paralelasexistentes 14 15. ComunicaoComunicao SEMPRE implica em custoPode resultar em tarefas esperandodesnecessariamentePode saturar a largura de bandaLatncia e largura de bandaLatncia o tempo que leva para uma mensagem detamanho 0 leva para chegarLargura de banda a quantidade de dados que podeser enviada em um instante de tempo (geralmentemegabyte/segundo ou gigabyte/segundo)15 16. ComunicaoTransparente (dados paralelos)No transparente (passagem de mensagens)Sncrona VS No sncrona 16 17. 17 18. Balanceamento de cargaSignifica procurar fazer com que os processos nofiquem ociososSe todas as tarefas precisarem sincronizar, o tempoir depender da tarefa mais lentaComo fazer?Particionar os dados (previamente) de maneira igualParticionar os dados dinamicamente18 19. I/O19 20. I/O representam problemas para a paralelizaoNem sempre a I/O pode ser feita de forma paralela preciso tomar cuidado com sobrescrita de dadosI/O sobre a rede tem vrios gargalos e pode causarinconsistncias (NFS)Existem sistemas de arquivos paralelos (Ex: Lustre,PVFS, GPFS, etc)Evite I/O!Quando for necessrio prefervel minimizar o nr deoperaes de escrita (pacotes grandes) 20 21. Speedup terico21 22. 22 23. Dicas finaisThe ability of a parallel programs performance toscale is a result of a number of interrelated factors.Simply adding more machines is rarely the answer.The algorithm may have inherent limits to scalability.At some point, adding more resources causesperformance to decrease. Most parallel solutionsdemonstrate this characteristic at some point.Parallel support libraries and subsystems softwarecan limit scalability independent of your application.23 24. Paralelismo o futuro da computao?At 2020, vrios pases (China, ndia, etc) querem ter um computador com 1 Exaflops 24 25. 25 26. Titan: 17.59 Petaflops 560640 processadores, sendo 261632 ncleos NVIDIA GPU26 27. Leituras adicionais e refernciashttp://en.wikipedia.org/wiki/Parallel_computershttps://computing.llnl.gov/tutorials/parallel_comp/27