SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
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
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;
Problema

A evolução do hardware supera a do software;
Fazer uso otimizado dos recursos
computacionais;
Computação em aplicações críticas;
Objetivos

Estudar o estado da arte;
  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;
Medicina e
biociências, meteorologia, oceanografia, comér
cio e finanças e astronomia....
Sequenciamento genético, modelos
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
1003.1c;
Linguagem C/C++;
Plataforma Unix como Windows;
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
quantidade de threads e maximizando a
eficiência;
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;
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;
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++
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;
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;
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;
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;
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
Resultados
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”.
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.
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.
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.

Mais conteúdo relacionado

Semelhante a Análise de interfaces para programação paralela

Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilHeron Carvalho
 
Proposta lucas simon-rodrigues-magalhaes
Proposta lucas simon-rodrigues-magalhaesProposta lucas simon-rodrigues-magalhaes
Proposta lucas simon-rodrigues-magalhaeslucassrod
 
Computação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosComputação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosbshecht
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...Edinaldo La-Roque
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...Edinaldo La-Roque
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRJulio Viegas
 
Presentation Regiment
Presentation RegimentPresentation Regiment
Presentation RegimentBimboJones
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Huge
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerAndré Rocha
 

Semelhante a Análise de interfaces para programação paralela (20)

Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas Multicore
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Proposta lucas simon-rodrigues-magalhaes
Proposta lucas simon-rodrigues-magalhaesProposta lucas simon-rodrigues-magalhaes
Proposta lucas simon-rodrigues-magalhaes
 
Computação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosComputação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticos
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
 
Artigo redes
Artigo redesArtigo redes
Artigo redes
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Palestra
PalestraPalestra
Palestra
 
Desenvolvimento de Aplicações
Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações
Desenvolvimento de Aplicações
 
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
 
Exercício 04 alunos
Exercício 04 alunosExercício 04 alunos
Exercício 04 alunos
 
Manual
ManualManual
Manual
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
 
Presentation Regiment
Presentation RegimentPresentation Regiment
Presentation Regiment
 
Msc_CarlosNeves
Msc_CarlosNevesMsc_CarlosNeves
Msc_CarlosNeves
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
 

Mais de Helton Ritter

Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...Helton Ritter
 
Apresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SIApresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SIHelton Ritter
 
05 - Última aula Android
05 - Última aula Android05 - Última aula Android
05 - Última aula AndroidHelton Ritter
 
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosAula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosHelton Ritter
 
Primeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidPrimeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidHelton Ritter
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com phpHelton Ritter
 
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxAuto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxHelton Ritter
 
Reconhecimento facial
Reconhecimento facialReconhecimento facial
Reconhecimento facialHelton Ritter
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHPHelton Ritter
 
Contribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteContribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteHelton Ritter
 

Mais de Helton Ritter (11)

Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...Desenvolvimento de um Portal Web  Escalável e de alta Performance comCOM PROC...
Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROC...
 
Apresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SIApresentacao pré banca TCC em SI
Apresentacao pré banca TCC em SI
 
05 - Última aula Android
05 - Última aula Android05 - Última aula Android
05 - Última aula Android
 
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosAula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
 
Primeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidPrimeira aula desenvolvimento para Android
Primeira aula desenvolvimento para Android
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com php
 
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxAuto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
Reconhecimento facial
Reconhecimento facialReconhecimento facial
Reconhecimento facial
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
 
Contribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteContribuição da teoria do equilíbrio na identificação de Truste
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...
  • 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
  • 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.