Ferramentas de Programação Paralela para Arquiteturas Multicore

2.031 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.031
No SlideShare
0
A partir de incorporações
0
Número de incorporações
21
Ações
Compartilhamentos
0
Downloads
44
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

×