Introdução à Computação de Alto       Desempenho – pt II                          Vinícius Alves Hax                   Sis...
Sobre mimEngenheiro de ComputaçãoEspecialista em Aplicações para a WebAluno Mestrado Engenharia deComputaçãoAnalista de Te...
Computação de Alto Desempenho é praticamente    um sinônimo de Computação Paralela                                        ...
Por que paralelizar?Economizar tempo e/ou dinheiroResolver problemas grandes que não caberiam namemória de um único comput...
5
6
Conceitos importantesTarefaPipelineMemória compartilhadaSymmetric Multi-Processor (SMP)SincronizaçãoSpeedup Observado   Te...
Overhead por paralelização  Tempo de inicialização de tarefas  Sincronização  Comunicação de dados  Overhead por bibliotec...
Escalabilidade  Capacidade de um sistema aumentar o speedup  proporcionalmente ao incremento de processadoresEmbaraçosamen...
Desenvolvendo programas paralelos                                    10
Automática VS ManualGeralmente a paralelização é feita manualmente  Leva tempo  Sujeita a errosCompilador paralelo pode se...
Dicas de paralelização manual                                12
Entender bem o problema e se existir um códigoserial entendê-lo tambémDescobrir se o problema é paralelizávelIdentificar o...
Identificar inibidores de paralelismo (Ex: dependênciade dados)Verificar algoritmos alternativosUtilizar quando possível b...
ComunicaçãoComunicação SEMPRE implica em custoPode resultar em tarefas esperandodesnecessariamentePode saturar a largura d...
ComunicaçãoTransparente (dados paralelos)Não transparente (passagem de mensagens)Síncrona VS Não síncrona                 ...
17
Balanceamento de cargaSignifica procurar fazer com que os processos nãofiquem ociososSe todas as tarefas precisarem sincro...
I/O      19
I/O representam problemas para a paralelizaçãoNem sempre a I/O pode ser feita de forma paralelaÉ preciso tomar cuidado com...
Speedup teórico                  21
22
Dicas finaisThe ability of a parallel programs performance toscale is a result of a number of interrelated factors.Simply ...
Paralelismo é o futuro da computação?Até 2020, vários países (China, Índia, etc) querem       ter um computador com 1 Exaf...
25
Titan:   17.59 Petaflops   560640 processadores, sendo 261632 núcleos   NVIDIA GPU                                        ...
Leituras adicionais e referênciashttp://en.wikipedia.org/wiki/Parallel_computershttps://computing.llnl.gov/tutorials/paral...
Próximos SlideShares
Carregando em…5
×

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

829 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
829
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
22
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Introdução à Computação de Alto Desempenho – pt II Vinícius Alves Hax Sistemas Distribuídos - FURG Dezembro de 2012
  2. 2. Sobre mimEngenheiro de ComputaçãoEspecialista em Aplicações para a WebAluno Mestrado Engenharia deComputaçãoAnalista de Tecnologia de Informação (FURG)Empreendedor (Zetaflops)Interesses: Software Livre, Linux, MetodologiasÁgeis, Rails, Computação de Alto Desempenho,Internet das Coisas, Governo Eletrônico, Web 2
  3. 3. Computação de Alto Desempenho é praticamente um sinônimo de Computação Paralela 3
  4. 4. Por que paralelizar?Economizar tempo e/ou dinheiroResolver problemas grandes que não caberiam namemória de um único computadorConcorrênciaRecursos não locais 4
  5. 5. 5
  6. 6. 6
  7. 7. Conceitos importantesTarefaPipelineMemória compartilhadaSymmetric Multi-Processor (SMP)SincronizaçãoSpeedup Observado Tempo programa serial / Tempo programa paralelo 7
  8. 8. Overhead por paralelização Tempo de inicialização de tarefas Sincronização Comunicação de dados Overhead por bibliotecas de software Tempo de término de tarefasMassivamente paralelo Sistema com “muitos” processadores 8
  9. 9. Escalabilidade Capacidade de um sistema aumentar o speedup proporcionalmente ao incremento de processadoresEmbaraçosamente paralelo “Solving many similar, but independent tasks simultaneously; little to no need for coordination between the tasks.” 9
  10. 10. Desenvolvendo programas paralelos 10
  11. 11. Automática VS ManualGeralmente a paralelização é feita manualmente Leva tempo Sujeita a errosCompilador paralelo pode ser de dois tipos Automático Laços são os elementos mais paralelizados Semi-automático (diretivas de compilação) Pode ser usado em conjunto com métodos automáticosProblemas da automatização Pode produzir erros A performance pode piorar Geralmente se limita aos laços de repetição 11
  12. 12. Dicas de paralelização manual 12
  13. 13. Entender bem o problema e se existir um códigoserial entendê-lo tambémDescobrir se o problema é paralelizávelIdentificar os pontos críticos do código Paralelizar primeiro os trechos de código que consomem mais tempo de CPU Utilizar ferramentas de análise de códigoIdentificar gargalos do sistema Quais pontos que podem fazer o programa executar mais lentamente? (Ex: I/O) Mudar o programa ou algoritmo para evitar essas áreas 13
  14. 14. Identificar inibidores de paralelismo (Ex: dependênciade dados)Verificar algoritmos alternativosUtilizar quando possível bibliotecas paralelasexistentes 14
  15. 15. ComunicaçãoComunicação SEMPRE implica em custoPode resultar em tarefas esperandodesnecessariamentePode saturar a largura de bandaLatência e largura de banda Latência é o tempo que leva para uma mensagem de tamanho 0 leva para chegar Largura de banda é a quantidade de dados que pode ser enviada em um instante de tempo (geralmente megabyte/segundo ou gigabyte/segundo) 15
  16. 16. ComunicaçãoTransparente (dados paralelos)Não transparente (passagem de mensagens)Síncrona VS Não síncrona 16
  17. 17. 17
  18. 18. Balanceamento de cargaSignifica procurar fazer com que os processos nãofiquem ociososSe todas as tarefas precisarem sincronizar, o tempoirá depender da tarefa mais lentaComo fazer? Particionar os dados (previamente) de maneira igual Particionar os dados dinamicamente 18
  19. 19. I/O 19
  20. 20. I/O representam problemas para a paralelizaçãoNem sempre a I/O pode ser feita de forma paralelaÉ preciso tomar cuidado com sobrescrita de dadosI/O sobre a rede tem vários gargalos e pode causarinconsistências (NFS)Existem sistemas de arquivos paralelos (Ex: Lustre,PVFS, GPFS, etc)Evite I/O!Quando for necessário é preferível minimizar o nr deoperações de escrita (pacotes grandes) 20
  21. 21. Speedup teórico 21
  22. 22. 22
  23. 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. 24. Paralelismo é o futuro da computação?Até 2020, vários países (China, Índia, etc) querem ter um computador com 1 Exaflops 24
  25. 25. 25
  26. 26. Titan: 17.59 Petaflops 560640 processadores, sendo 261632 núcleos NVIDIA GPU 26
  27. 27. Leituras adicionais e referênciashttp://en.wikipedia.org/wiki/Parallel_computershttps://computing.llnl.gov/tutorials/parallel_comp/ 27

×