Contribuição da teoria do equilíbrio na identificação de Truste
Análise de interfaces para programação paralela
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...
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
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.