Post on 22-Jun-2015
description
Análise de interfaces para a programação paralela e
distribuídadistribuída
Acadêmicos: Alisson Luiz SchaurichHelton Eduardo RitterHelton Eduardo RitterMaycon Viana Bordin
Orientador: Claudio Schepke
Metodologia
� Pesquisa bibliográfica e laboratorial;
Acadêmicos do cursos de Sistemas de � Acadêmicos do cursos de Sistemas de Informação e Tecnologia em Redes de Computadores;
� Primeiro semestre de 2009;
Problema
� A evolução do hardware supera a do software;
Fazer uso otimizado dos recursos � Fazer uso otimizado dos recursos computacionais;
� Computação em aplicações críticas;
Objetivos
� Estudar o estado da arte;
Conhecer as principais classes de � Conhecer as principais classes de aplicações;
� Identificar as principais bibliotecas e linguagens;
� Desenvolver algoritmos de testes;
Aplicações
� Áreas que demandam muita capacidade de processamento;processamento;
� Medicina e biociências, meteorologia, oceanografia, comércio e finanças e astronomia....
� Sequenciamento genético, modelos econômicos, mapeamento da galáxia...econômicos, mapeamento da galáxia...
Memória compartilhada x distribuída
Multicore, Multiprocessador,Cluster, Grid...
PThreads
� PThreads é uma Interface Portável para Sistemas Operacionais (POSIX) padrão IEEE Sistemas Operacionais (POSIX) padrão IEEE 1003.1c;
� Linguagem C/C++;
� Plataforma Unix como Windows;
� Controle das threads é feito pelo programador;Controle das threads é feito pelo programador;
� Evitar deadlocks;
� Sincronização e controle das threads;
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 � Paralelismo na medida certa, minimizando a quantidade de threads e maximizando a eficiência;
TBB - Threads Building Blocks
� Biblioteca para C++ desenvolvida pela Intel;
Processadores multicore;� Processadores multicore;
� Sistemas Windows, Mac OS e Linux;
� Paralelização de programas em alto nível;
SHMEM
� Disponível em máquinas Cray e SGI;
MPI e PVM precisam da cooperação entre dois � 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”processador destino”
� Menos latência de banda que chamadas MPI;
� Diminuir a comunicação entre os processos;
MPI
• Foi definida em 1994 pelo Fórum MPI;
• Linguagem C, C++ ou Fortran 77;• 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 • 1996 = padrão MPI-2 = ANSI C, Fortran 90 e ANSI C++
OpenMP
• Em 2005 versão para Fortran/C/C++;
• Paralelizar algoritmos sequencias de modo • Paralelizar algoritmos sequencias de modo facilitado;
• Uma thread mestre que irá designar as tarefas para as outras threads;
• Escalabilidade é limitada pela arquitetura de • Escalabilidade é limitada pela arquitetura de memória;
HPF - High Performance Fortran
• Extensão de Fortran 90;
• Cada processo trabalha no segmento de dados • 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;• Portabilidade para diferentes arquiteturas;
Cuda - nVidia
� Disponível nas linhas GeForce (a partir da Série 8), Quadro e a linha Tesla;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;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;
RMI - Remote Method Invocation
� Java = portabilidade = abstração do hardware;
Métodos remotos de objetos invocados por � 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;Suporta orientação a objeto e polimorfismo;
Resultados
18
20
Tempo de execução
Multiplicação de matriz de 1024x1024
Java seq = 18,00543
8
10
12
14
16
Tem
po d
e ex
ecuç
ão
Java Sequencial
Java Paralelo
C Sequencial
C OpenMP
C Sequencial /fast
C OpenMP /fast
Java seq = 18,00543Java paralelo = 9,096539718
C Seq/fast = 0,636755667C OpenMP/fast = 0,258097
0
2
4
6
16 32 64 128 256 512 1024
Ordem da matriz
C OpenMP /fast
Resultados
Conclusões
� A escolha por multicores e memória compartilhada tem um limite.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”.
Referências
ANDREWS, G. R. Foundations of Multithreaded, Parallel, and Distrib uted Programming . Reading: Addison-Wesley. 2001. 664 p.
CHANDRA, R. Parallel Programming in OpenMP . Morgan Kaufmann Publishers, USA, 2001.CHANDRA, R. Parallel Programming in OpenMP . Morgan Kaufmann Publishers, USA, 2001.
CHAPMAN, Barbara, JOST, Gabriele, PAS, Ruud van der . Using OpenMP Portable SharedMemory 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 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.
Referências
MIT CSAIL (Supercomputing Technologies Group). The CilkProject , http://supertech.csail.mit.edu/cilk, , jul. 2009, 03.
MIT CSAIL (Supercomputing Technologies Group). Cilk 5.4.6 Reference 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.Colleges, 23(4):298-298, 2008.
QUAMMEN, Cory. Introduction to Programming Shared-Memory and Distr ibuted-Memory Parallel Computers . Association for Computing Machinery, http://www.acm.org/crossroads/xrds8-3/programming.html, jul. 2009, 05.
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 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 invoc ation . IEEE Concurrency, 6(3):5-7, 1998.