Ferramentas de Programação Paralela
     para Arquiteturas Multicore




            Acadêmicos: Helton Eduardo Ritter
   ...
Metodologia

• Pesquisa bibliográfica e laboratorial;
• Acadêmicos do cursos de Sistemas de
  Informação;
• Primeiro e seg...
Problema

• A evolução do hardware supera a do software;
• Fazer uso otimizado dos recursos
  computacionais;
• Computação...
Objetivos

• Estudar o estado da arte;
 • Conhecer as principais classes de aplicações;
 • Identificar as principais bibli...
Aplicações

• Áreas que demandam muita capacidade de
  processamento;
• Medicina e biociências, meteorologia,
  oceanograf...
Memória compartilhada


• Faz-se uso de um único endereçamento de
memória;

• Os aplicativos acessam variáves
compartilhad...
PThreads
• PThreads é uma Interface Portável para
  Sistemas Operacionais (POSIX) padrão IEEE
  1003.1c;
• Linguagem C/C++...
Cilk
• Grupo de Supercomputação do MIT;
• Linguagem se baseia na linguagem C ANSI;
• Versões para as plataformas GNU/Linux...
TBB - Threads Building Blocks

• Biblioteca para C++ desenvolvida pela Intel;
• Processadores multicore;
• Sistemas Window...
OpenMP

• Em 2005 versão para Fortran/C/C++;
• Paralelizar algoritmos sequencias de modo
  facilitado;
• Uma thread mestre...
HPF - High Performance Fortran

• Extensão de Fortran 90;
• Cada processo trabalha no segmento de dados
  em que é dono no...
Cuda - nVidia
• Disponível nas linhas GeForce (a partir da
  Série 8), Quadro e a linha Tesla;
• GPGPU (General-purpose co...
Resultados

Multiplicação de matriz de 1024x1024

Java seq = 18,00543
Java paralelo = 9,096539718

C Seq/fast = 0,63675566...
Resultados
Avaliação
Conclusões

• Pragmas de compilador é mais simples,
  quando o código é facilmente paralelizável;
• Autoparalelização;
• C...
Referências
Próximos SlideShares
Carregando em…5
×

Ferramentas de Programação Paralela para Arquiteturas Multicore

2.016 visualizações

Publicada em

Slides apresentados na 10ª Escola Regional de Alto Desempenho

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

Sem downloads
Visualizações
Visualizações totais
2.016
No SlideShare
0
A partir de incorporações
0
Número de incorporações
21
Ações
Compartilhamentos
0
Downloads
43
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Ferramentas de Programação Paralela para Arquiteturas Multicore

  1. 1. Ferramentas de Programação Paralela para Arquiteturas Multicore Acadêmicos: Helton Eduardo Ritter Maycon Viana Bordin
  2. 2. Metodologia • Pesquisa bibliográfica e laboratorial; • Acadêmicos do cursos de Sistemas de Informação; • Primeiro e segundo semestre de 2009;
  3. 3. Problema • A evolução do hardware supera a do software; • Fazer uso otimizado dos recursos computacionais; • Computação em aplicações críticas;
  4. 4. Objetivos • Estudar o estado da arte; • Conhecer as principais classes de aplicações; • Identificar as principais bibliotecas e linguagens; • Desenvolver algoritmos de testes;
  5. 5. Aplicações • Áreas que demandam muita capacidade de processamento; • Medicina e biociências, meteorologia, oceanografia, comércio e finanças e astronomia.... • Sequenciamento genético, modelos econômicos, mapeamento da galáxia...
  6. 6. Memória compartilhada • Faz-se uso de um único endereçamento de memória; • Os aplicativos acessam variáves compartilhadas em um espaço comum;
  7. 7. PThreads • PThreads é uma Interface Portável para Sistemas Operacionais (POSIX) padrão IEEE 1003.1c; • Linguagem C/C++; • Plataforma Unix e Windows; • Controle das threads é feito pelo programador; • Evitar deadlocks; • Sincronização e controle das threads;
  8. 8. Cilk • Grupo de Supercomputação do MIT; • Linguagem se baseia na linguagem C ANSI; • Versões para as plataformas GNU/Linux, MacOS X e Windows; • Cilk é encarregado de escalonar as tarefas; • Compartilhamento e/ou roubo de tarefas; • Paralelismo na medida certa, minimizando a quantidade de threads e maximizando a eficiência;
  9. 9. TBB - Threads Building Blocks • Biblioteca para C++ desenvolvida pela Intel; • Processadores multicore; • Sistemas Windows, Mac OS e Linux; • Paralelização de programas em alto nível;
  10. 10. OpenMP • Em 2005 versão para Fortran/C/C++; • Paralelizar algoritmos sequencias de modo facilitado; • Uma thread mestre que irá designar as tarefas para as outras threads; • Escalabilidade é limitada pela arquitetura de memória;
  11. 11. HPF - High Performance Fortran • Extensão de Fortran 90; • Cada processo trabalha no segmento de dados em que é dono no mapa de memória; • Dados distribuídos para não haver dependências entre eles; • Portabilidade para diferentes arquiteturas;
  12. 12. Cuda - nVidia • Disponível nas linhas GeForce (a partir da Série 8), Quadro e a linha Tesla; • GPGPU (General-purpose computing on Graphics Processing Units). • Memória compartilhada de acesso rápido; • Leitura de endereços arbitrários na memória; • Funções recursivas não são suportadas; • Precisão do tipo Double não segue o padrão IEEE 754;
  13. 13. Resultados Multiplicação de matriz de 1024x1024 Java seq = 18,00543 Java paralelo = 9,096539718 C Seq/fast = 0,636755667 C OpenMP/fast = 0,258097
  14. 14. Resultados
  15. 15. Avaliação
  16. 16. Conclusões • Pragmas de compilador é mais simples, quando o código é facilmente paralelizável; • Autoparalelização; • CUDA em fase de testes, logo HPF e OpenMP continuam sendo as principais alternativas; • TBB surgiu com enfoque em multicore; • A escolha da ferramenta vai depender da aplicação em questão.
  17. 17. Referências

×