Your SlideShare is downloading. ×
Análise de interfaces para a programação paralela e  distribuída
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Análise de interfaces para a programação paralela e distribuída

1,399
views

Published on

Comparando e teorizando sobre memória compartilhada e distribuída. Ciclk, pThreads, OpenMP... mpi, cuda

Comparando e teorizando sobre memória compartilhada e distribuída. Ciclk, pThreads, OpenMP... mpi, cuda

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,399
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Análise de interfaces para a programação paralela e distribuída Acadêmicos: Alisson Luiz Schaurich Helton Eduardo Ritter Maycon Viana Bordin Orientador: Claudio Schepke
  • 2. Metodologia Pesquisa bibliográfica e laboratorial; Acadêmicos do cursos de Sistemas de Informação e Tecnologia em Redes de Computadores; Primeiro semestre de 2009;
  • 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. Objetivos Estudar o estado da arte; Conhecer as principais classes de aplicações; Identificar as principais bibliotecas e linguagens; Desenvolver algoritmos de testes;
  • 5. Aplicações Áreas que demandam muita capacidade de processamento; Medicina e biociências, meteorologia, oceanografia, comér cio e finanças e astronomia.... Sequenciamento genético, modelos econômicos, mapeamento da galáxia...
  • 6. Memória compartilhada x distribuída Multicore, Multiprocessador,Cluster, Grid...
  • 7. PThreads PThreads é uma Interface Portável para Sistemas Operacionais (POSIX) padrão IEEE 1003.1c; Linguagem C/C++; Plataforma Unix como Windows; Controle das threads é feito pelo programador; Evitar deadlocks; Sincronização e controle das threads;
  • 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. 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. SHMEM Disponível em máquinas Cray e SGI; MPI e PVM precisam da cooperação entre dois processadores; "Com SHMEM, enviar dados envolve apenas uma única máquina em que o processador simplesmente coloca os dados na memória do processador destino” Menos latência de banda que chamadas MPI; Diminuir a comunicação entre os processos;
  • 11. MPI • Foi definida em 1994 pelo Fórum MPI; • Linguagem C, C++ ou Fortran 77; • Multiple Program Multiple Date ou Single Program Multiple Date; • Modelo de Troca de Mensagens; • 1996 = padrão MPI-2 = ANSI C, Fortran 90 e ANSI C++
  • 12. 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;
  • 13. 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;
  • 14. 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;
  • 15. RMI - Remote Method Invocation Java = portabilidade = abstração do hardware; Métodos remotos de objetos invocados por outras máquinas virtuais; Serializa/ desserializa os objetos para transmití- los ; Suporta orientação a objeto e polimorfismo;
  • 16. Resultados Tempo de execução 20 Multiplicação de matriz de 1024x1024 18 16 Java seq = 18,00543 14 Java paralelo = 9,096539718 C Seq/fast = 0,636755667 Tempo de execução 12 Java Sequencial 10 C OpenMP/fast = 0,258097 Java Paralelo C Sequencial C OpenMP 8 C Sequencial /fast C OpenMP /fast 6 4 2 0 16 32 64 128 256 512 1024 Ordem da matriz
  • 17. Resultados
  • 18. Conclusões A escolha por multicores e memória compartilhada tem um limite. A escolha por troca de mensagens tem o problema da comunicação. “ A escolha da ferramenta vai depender da aplicação”.
  • 19. Referências ANDREWS, G. R. Foundations of Multithreaded, Parallel, and Distributed Programming. Reading: Addison-Wesley. 2001. 664 p. CHANDRA, R. Parallel Programming in OpenMP. Morgan Kaufmann Publishers, USA, 2001. CHAPMAN, Barbara, JOST, Gabriele, PAS, Ruud van der . Using OpenMP Portable Shared Memory Parallel Programming. MIT Press, London, 2007. Cray Research. Cray T3E Fortran Optimization Guide, http://docs.cray.com/books/004-2518- 002/html-004-2518-002/z826920364dep.html , jul. 2009, 02. DONGARRA, J. A. Trends in High Performance Computing. The Computer Journal. Vol. 47, n.4, pp. 399-403. 2004. GALANTE, G.; STRINGHNI, D.; CAVALHEIRO, G. Programação Concorrente: Threads, MPI e PVM. 2ª ERAD. Porto Alegre: SBC/Instituto de Informática UFRGS/UNISINOS/ULBRA, 2002. HAX, V. Programação com PThreads. Núcleo de Computação Científica – Engenharia da Computação – FURG, http:// www.ncc.furg.br/seminarios/pthreads.pdf, abr. 2009, 01. MELLOR-CRUMMEY, John. Shared-memory Parallel Programming with Cilk. Rice University - Department of Computer Science, http://www.owlnet.rice.edu/~comp422/lecture-notes/comp422- Lecture4-Cilk.pdf, jul. 2009, 06.
  • 20. Referências MIT CSAIL (Supercomputing Technologies Group). The Cilk Project, http://supertech.csail.mit.edu/cilk, , jul. 2009, 03. MIT CSAIL (Supercomputing Technologies Group). Cilk 5.4.6 Reference Manual, http://supertech.csail.mit.edu/cilk/manual-5.4.6.pdf, jul. 2009, 08. NASA Advanced Supercomputing Division. Implementation of NAS Parallel Benchmarks in High Performance Fortran, http://www.nas.nasa.gov/News/Techreports/1998/PDF/nas-98-009.pdf, jul. 2009, 14. NICHOLLS, J., BUCK, I., GARLAND, M., SKADRON, K. Scalable parallel programming with cuda. Queue, 6(2):40-53, 2008. PHEATT, C. Intel threading building blocks. Journal of Computing Sciences in Colleges, 23(4):298-298, 2008. QUAMMEN, Cory. Introduction to Programming Shared-Memory and Distributed-Memory Parallel Computers. Association for Computing Machinery, http://www.acm.org/crossroads/xrds8- 3/programming.html, jul. 2009, 05.
  • 21. Referências REINDERS, James. Intel Treading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism. O’Reilly Media, 2007. SHAN, H. and SINGH, J. P. A comparison of mpi, shmem and cache-coherent shared address space programming models on the sgi origin2000. In ICS '99: Proceedings of the 13th international conference on Supercomputing, pages 329-338, New York, NY, USA, 1999. ACM. WALDO, J. Remote procedure calls and java remote method invocation. IEEE Concurrency, 6(3):5-7, 1998.