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

21
Análise de interfaces para a programação paralela e distribuída distribuída Acadêmicos: Alisson Luiz Schaurich Helton Eduardo Ritter Helton Eduardo Ritter Maycon Viana Bordin Orientador: Claudio Schepke

Upload: helton-ritter

Post on 22-Jun-2015

1.438 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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

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

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

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;

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

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;

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

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;

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

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...

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

Memória compartilhada x distribuída

Multicore, Multiprocessador,Cluster, Grid...

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

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;

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

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;

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

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;

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

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;

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

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++

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

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;

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

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;

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

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;

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

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;

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

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

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

Resultados

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

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”.

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

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.

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

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.

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

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.