SlideShare uma empresa Scribd logo
1 de 27
Introdução à Computação de Alto
       Desempenho – pt II
                          Vinícius Alves Hax
                   Sistemas Distribuídos - FURG




                       Dezembro de 2012
Sobre mim

Engenheiro de Computação
Especialista em Aplicações para a Web
Aluno Mestrado Engenharia de
Computação

Analista 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
Computação de Alto Desempenho é praticamente
    um sinônimo de Computação Paralela




                                               3
Por que paralelizar?

Economizar tempo e/ou dinheiro
Resolver problemas grandes que não caberiam na
memória de um único computador
Concorrência
Recursos não locais




                                                     4
5
6
Conceitos importantes

Tarefa
Pipeline
Memória compartilhada
Symmetric Multi-Processor (SMP)
Sincronização
Speedup Observado
   Tempo programa serial / Tempo programa paralelo




                                                      7
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 tarefas
Massivamente paralelo
  Sistema com “muitos” processadores




                                         8
Escalabilidade
  Capacidade de um sistema aumentar o speedup
  proporcionalmente ao incremento de processadores

Embaraçosamente paralelo
  “Solving many similar, but independent tasks
  simultaneously; little to no need for coordination
  between the tasks.”




                                                       9
Desenvolvendo programas paralelos




                                    10
Automática VS Manual

Geralmente a paralelização é feita manualmente
  Leva tempo
  Sujeita a erros
Compilador 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áticos
Problemas da automatização
  Pode produzir erros
  A performance pode piorar
  Geralmente se limita aos laços de repetição



                                                          11
Dicas de paralelização manual




                                12
Entender bem o problema e se existir um código
serial entendê-lo também
Descobrir se o problema é paralelizável
Identificar 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ódigo
Identificar 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
Identificar inibidores de paralelismo (Ex: dependência
de dados)
Verificar algoritmos alternativos
Utilizar quando possível bibliotecas paralelas
existentes




                                                         14
Comunicação

Comunicação SEMPRE implica em custo
Pode resultar em tarefas esperando
desnecessariamente
Pode saturar a largura de banda
Latê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
Comunicação

Transparente (dados paralelos)
Não transparente (passagem de mensagens)

Síncrona VS Não síncrona




                                                 16
17
Balanceamento de carga

Significa procurar fazer com que os processos não
fiquem ociosos
Se todas as tarefas precisarem sincronizar, o tempo
irá depender da tarefa mais lenta

Como fazer?
  Particionar os dados (previamente) de maneira igual
  Particionar os dados dinamicamente




                                                        18
I/O




      19
I/O representam problemas para a paralelização
Nem sempre a I/O pode ser feita de forma paralela
É preciso tomar cuidado com sobrescrita de dados
I/O sobre a rede tem vários gargalos e pode causar
inconsistências (NFS)
Existem sistemas de arquivos paralelos (Ex: Lustre,
PVFS, GPFS, etc)
Evite I/O!
Quando for necessário é preferível minimizar o nr de
operações de escrita (pacotes grandes)




                                                       20
Speedup teórico




                  21
22
Dicas finais

The ability of a parallel program's performance to
scale 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 causes
performance to decrease. Most parallel solutions
demonstrate this characteristic at some point.

Parallel support libraries and subsystems software
can limit scalability independent of your application.




                                                            23
Paralelismo é o futuro da computação?

Até 2020, vários países (China, Índia, etc) querem
       ter um computador com 1 Exaflops




                                                     24
25
Titan:
   17.59 Petaflops
   560640 processadores, sendo 261632 núcleos
   NVIDIA GPU




                                                26
Leituras adicionais e referências

http://en.wikipedia.org/wiki/Parallel_computers
https://computing.llnl.gov/tutorials/parallel_comp/




                                                        27

Mais conteúdo relacionado

Mais procurados

Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidadeClaudia Costa
 
Algoritmos paralelos
Algoritmos paralelosAlgoritmos paralelos
Algoritmos paralelosDouglas Silva
 
Aula 4 de Arquitetura de Computadores
Aula 4 de Arquitetura de ComputadoresAula 4 de Arquitetura de Computadores
Aula 4 de Arquitetura de ComputadoresMarco Silva
 
Hardware questionario 01
Hardware   questionario 01Hardware   questionario 01
Hardware questionario 01Tiago
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Bruno Catão
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
 
IX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com PythonIX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com Pythonitalomaia
 
Gerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalGerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalAlexandre Duarte
 
Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Bruno Catão
 
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.Leonardo Venancio
 
#Palestra - Wireless Mesh Network - IFMA ECOMP
#Palestra - Wireless Mesh Network - IFMA ECOMP#Palestra - Wireless Mesh Network - IFMA ECOMP
#Palestra - Wireless Mesh Network - IFMA ECOMPPaulo Henrique
 
Introdução a Deep Learning
Introdução a Deep LearningIntrodução a Deep Learning
Introdução a Deep LearningCristian Muñoz
 
Arquitetura de Von Neumann
Arquitetura de Von NeumannArquitetura de Von Neumann
Arquitetura de Von NeumannWanessa Ribeiro
 

Mais procurados (20)

Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidade
 
Barbeiro Sonolento
Barbeiro SonolentoBarbeiro Sonolento
Barbeiro Sonolento
 
Algoritmos paralelos
Algoritmos paralelosAlgoritmos paralelos
Algoritmos paralelos
 
Aula 06-oac-memoria-principal
Aula 06-oac-memoria-principalAula 06-oac-memoria-principal
Aula 06-oac-memoria-principal
 
Modelo de von neumann melhorado
Modelo de von neumann melhoradoModelo de von neumann melhorado
Modelo de von neumann melhorado
 
Aula 4 de Arquitetura de Computadores
Aula 4 de Arquitetura de ComputadoresAula 4 de Arquitetura de Computadores
Aula 4 de Arquitetura de Computadores
 
Estudo_PPI
Estudo_PPIEstudo_PPI
Estudo_PPI
 
Hardware memória principal
Hardware  memória  principalHardware  memória  principal
Hardware memória principal
 
Hardware questionario 01
Hardware   questionario 01Hardware   questionario 01
Hardware questionario 01
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas Multicore
 
IX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com PythonIX Pylestras - SmartGrid com Python
IX Pylestras - SmartGrid com Python
 
Gerência de Memória: Memória Principal
Gerência de Memória: Memória PrincipalGerência de Memória: Memória Principal
Gerência de Memória: Memória Principal
 
Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Memória Primária
Memória PrimáriaMemória Primária
Memória Primária
 
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.
Organizações de Múltiplos Processadores - UFMA - Engenharia da Computação.
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
#Palestra - Wireless Mesh Network - IFMA ECOMP
#Palestra - Wireless Mesh Network - IFMA ECOMP#Palestra - Wireless Mesh Network - IFMA ECOMP
#Palestra - Wireless Mesh Network - IFMA ECOMP
 
Introdução a Deep Learning
Introdução a Deep LearningIntrodução a Deep Learning
Introdução a Deep Learning
 
Arquitetura de Von Neumann
Arquitetura de Von NeumannArquitetura de Von Neumann
Arquitetura de Von Neumann
 

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

Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - IntroduçãoFabio Moura Pereira
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Luiz Arthur
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativosFrank macoo
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)Bruno Camara
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fsopaulocsm
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrenteFabio Duarte
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Fernando Gomes Chaves
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosrobsons75
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisAdir Kuhn
 
História dos Sistemas - 3a Semana de SI
História dos Sistemas - 3a Semana de SIHistória dos Sistemas - 3a Semana de SI
História dos Sistemas - 3a Semana de SILeo Lorieri
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Affinitas GmbH
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptBrennoPimenta
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonIP10
 

Semelhante a Introdução à Computação de Alto Desempenho - Parte II (20)

Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Trabalho de sistemas operativos
Trabalho de sistemas operativosTrabalho de sistemas operativos
Trabalho de sistemas operativos
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Programação concorrente
Programação concorrenteProgramação concorrente
Programação concorrente
 
Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid Computação paralela 2 cluster e grid
Computação paralela 2 cluster e grid
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidos
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
História dos Sistemas - 3a Semana de SI
História dos Sistemas - 3a Semana de SIHistória dos Sistemas - 3a Semana de SI
História dos Sistemas - 3a Semana de SI
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
 
Sistema
SistemaSistema
Sistema
 

Mais de Vinícius Hax

História da computação - Parte 1 de 2 - Do princípio até 1936
História da computação - Parte 1 de 2 - Do princípio até 1936História da computação - Parte 1 de 2 - Do princípio até 1936
História da computação - Parte 1 de 2 - Do princípio até 1936Vinícius Hax
 
Do Zero ao YouTube em menos de 10 softwares livres
Do Zero ao YouTube em menos de 10 softwares livresDo Zero ao YouTube em menos de 10 softwares livres
Do Zero ao YouTube em menos de 10 softwares livresVinícius Hax
 
Uso de Software Livre e alternativas open source
Uso de Software Livre e alternativas open sourceUso de Software Livre e alternativas open source
Uso de Software Livre e alternativas open sourceVinícius Hax
 
E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?Vinícius Hax
 
Software Livre e Star Wars
Software Livre e Star WarsSoftware Livre e Star Wars
Software Livre e Star WarsVinícius Hax
 
Software Livre e Star Wars
Software Livre e Star WarsSoftware Livre e Star Wars
Software Livre e Star WarsVinícius Hax
 
30 anos da Free Software Foundation
30 anos da Free Software Foundation30 anos da Free Software Foundation
30 anos da Free Software FoundationVinícius Hax
 
E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?Vinícius Hax
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Como ficar milionário, só que ao contrário!
Como ficar milionário, só que ao contrário!Como ficar milionário, só que ao contrário!
Como ficar milionário, só que ao contrário!Vinícius Hax
 
Software Livre na Vida Científica e Acadêmica
Software Livre na Vida Científica e AcadêmicaSoftware Livre na Vida Científica e Acadêmica
Software Livre na Vida Científica e AcadêmicaVinícius Hax
 
Por que usar Software Livre afinal?
Por que usar Software Livre afinal?Por que usar Software Livre afinal?
Por que usar Software Livre afinal?Vinícius Hax
 
Padrões IETF para IP em dispositivos de baixa potência
Padrões IETF para IP em dispositivos de baixa potênciaPadrões IETF para IP em dispositivos de baixa potência
Padrões IETF para IP em dispositivos de baixa potênciaVinícius Hax
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Instalação de softwares em sistemas baseados no Debian
Instalação de softwares em sistemas baseados no DebianInstalação de softwares em sistemas baseados no Debian
Instalação de softwares em sistemas baseados no DebianVinícius Hax
 
2025 - O ano do Linux no Desktop?
2025 - O ano do Linux no Desktop?2025 - O ano do Linux no Desktop?
2025 - O ano do Linux no Desktop?Vinícius Hax
 

Mais de Vinícius Hax (16)

História da computação - Parte 1 de 2 - Do princípio até 1936
História da computação - Parte 1 de 2 - Do princípio até 1936História da computação - Parte 1 de 2 - Do princípio até 1936
História da computação - Parte 1 de 2 - Do princípio até 1936
 
Do Zero ao YouTube em menos de 10 softwares livres
Do Zero ao YouTube em menos de 10 softwares livresDo Zero ao YouTube em menos de 10 softwares livres
Do Zero ao YouTube em menos de 10 softwares livres
 
Uso de Software Livre e alternativas open source
Uso de Software Livre e alternativas open sourceUso de Software Livre e alternativas open source
Uso de Software Livre e alternativas open source
 
E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?
 
Software Livre e Star Wars
Software Livre e Star WarsSoftware Livre e Star Wars
Software Livre e Star Wars
 
Software Livre e Star Wars
Software Livre e Star WarsSoftware Livre e Star Wars
Software Livre e Star Wars
 
30 anos da Free Software Foundation
30 anos da Free Software Foundation30 anos da Free Software Foundation
30 anos da Free Software Foundation
 
E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?E agora o que faço eu da vida sem você (faculdade)?
E agora o que faço eu da vida sem você (faculdade)?
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Como ficar milionário, só que ao contrário!
Como ficar milionário, só que ao contrário!Como ficar milionário, só que ao contrário!
Como ficar milionário, só que ao contrário!
 
Software Livre na Vida Científica e Acadêmica
Software Livre na Vida Científica e AcadêmicaSoftware Livre na Vida Científica e Acadêmica
Software Livre na Vida Científica e Acadêmica
 
Por que usar Software Livre afinal?
Por que usar Software Livre afinal?Por que usar Software Livre afinal?
Por que usar Software Livre afinal?
 
Padrões IETF para IP em dispositivos de baixa potência
Padrões IETF para IP em dispositivos de baixa potênciaPadrões IETF para IP em dispositivos de baixa potência
Padrões IETF para IP em dispositivos de baixa potência
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Instalação de softwares em sistemas baseados no Debian
Instalação de softwares em sistemas baseados no DebianInstalação de softwares em sistemas baseados no Debian
Instalação de softwares em sistemas baseados no Debian
 
2025 - O ano do Linux no Desktop?
2025 - O ano do Linux no Desktop?2025 - O ano do Linux no Desktop?
2025 - O ano do Linux no Desktop?
 

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

  • 1. Introdução à Computação de Alto Desempenho – pt II Vinícius Alves Hax Sistemas Distribuídos - FURG Dezembro de 2012
  • 2. Sobre mim Engenheiro de Computação Especialista em Aplicações para a Web Aluno Mestrado Engenharia de Computação Analista 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. Computação de Alto Desempenho é praticamente um sinônimo de Computação Paralela 3
  • 4. Por que paralelizar? Economizar tempo e/ou dinheiro Resolver problemas grandes que não caberiam na memória de um único computador Concorrência Recursos não locais 4
  • 5. 5
  • 6. 6
  • 7. Conceitos importantes Tarefa Pipeline Memória compartilhada Symmetric Multi-Processor (SMP) Sincronização Speedup Observado Tempo programa serial / Tempo programa paralelo 7
  • 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 tarefas Massivamente paralelo Sistema com “muitos” processadores 8
  • 9. Escalabilidade Capacidade de um sistema aumentar o speedup proporcionalmente ao incremento de processadores Embaraçosamente paralelo “Solving many similar, but independent tasks simultaneously; little to no need for coordination between the tasks.” 9
  • 11. Automática VS Manual Geralmente a paralelização é feita manualmente Leva tempo Sujeita a erros Compilador 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áticos Problemas da automatização Pode produzir erros A performance pode piorar Geralmente se limita aos laços de repetição 11
  • 13. Entender bem o problema e se existir um código serial entendê-lo também Descobrir se o problema é paralelizável Identificar 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ódigo Identificar 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. Identificar inibidores de paralelismo (Ex: dependência de dados) Verificar algoritmos alternativos Utilizar quando possível bibliotecas paralelas existentes 14
  • 15. Comunicação Comunicação SEMPRE implica em custo Pode resultar em tarefas esperando desnecessariamente Pode saturar a largura de banda Latê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. Comunicação Transparente (dados paralelos) Não transparente (passagem de mensagens) Síncrona VS Não síncrona 16
  • 17. 17
  • 18. Balanceamento de carga Significa procurar fazer com que os processos não fiquem ociosos Se todas as tarefas precisarem sincronizar, o tempo irá depender da tarefa mais lenta Como fazer? Particionar os dados (previamente) de maneira igual Particionar os dados dinamicamente 18
  • 19. I/O 19
  • 20. I/O representam problemas para a paralelização Nem sempre a I/O pode ser feita de forma paralela É preciso tomar cuidado com sobrescrita de dados I/O sobre a rede tem vários gargalos e pode causar inconsistências (NFS) Existem sistemas de arquivos paralelos (Ex: Lustre, PVFS, GPFS, etc) Evite I/O! Quando for necessário é preferível minimizar o nr de operações de escrita (pacotes grandes) 20
  • 22. 22
  • 23. Dicas finais The ability of a parallel program's performance to scale 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 causes performance to decrease. Most parallel solutions demonstrate this characteristic at some point. Parallel support libraries and subsystems software can limit scalability independent of your application. 23
  • 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
  • 26. Titan: 17.59 Petaflops 560640 processadores, sendo 261632 núcleos NVIDIA GPU 26
  • 27. Leituras adicionais e referências http://en.wikipedia.org/wiki/Parallel_computers https://computing.llnl.gov/tutorials/parallel_comp/ 27