SlideShare uma empresa Scribd logo
1 de 31
MapReduce em
GPU
Inael Rodrigues
MapReduce: O que é isso?
● É um modelo de programação
● É um framework introduzido pelo Google
○ para suportar computações paralelas em grandes
coleções de dados em clusters de computadores
MapReduce
query
Cliente
Base de
dados central
Obtém o resultado em uma operação síncrona
Cliente
query
Bases de
dados
Executa a mesma query em cada fonte de dados simultaneamente
MapReduce: Como funciona?
Funções:
● Map
● Reduce
MapReduce: Como funciona?
● Função Map
○ processa um par de entrada chave/valor e gera um
resultado intermediários de chave/valor
● Função Reduce
○ Uni os os resultados intermediários associados
mesma chave.
MapReduce:Exemplos
● Contar palavras
● Contar frequência de acessos a uma URL
● Índice invertido
● Grep distribuído
● Sort distribuído
MapReduce:Exemplo WordCount
Implementação em Hadoop
MapReduce:Exemplo WordCount
MapReduce:Implementações
● Hadoop(hadoop.apache.org/docs/stable/mapred_tutorial.html)
● Disco(http://discoproject.org/)
● Skynet(http://skynet.rubyforge.org)
● Greenplun( http://www.greenplum.com/)
● FileMap(http://mfisk.github.com/filemap/ )
MapReduce: Paralelo em CPU
Evaluating MapReduce for Multi-core and
Multiprocessor Systems
Colby Ranger, Ramanan Raghuraman, Arun Penmetsa, Gary Bradski, Christos Kozyrakis∗
Computer Systems Laboratory
Stanford University
Phoenix, uma implementação de MapReduce
para sistemas de memória compartilhada
MapReduce: Paralelo em CPU
● Arquitetura SMP Simultaneous Multiprocessing: contem mais de um
processador que permite trabalhar em paralelo
● CMP Chip-level Multiprocessing: tem vários núcleos de execução em uma
única CPU. Basicamente temos determinados subconjuntos de
componentes da cpu duplicados.
MapReduce: Paralelo em GPU
MapReduce e paralelizado a nível de
● CLUSTER(Hadoop)
● CPU(Phoenix)
Seria possível paralelizar ainda mais o
MapReduce a nível de GPU para obter melhor
desempenho?
Arquitetura de uma GPU moderna
● GPU: Unidade de Processamento Gráfico
● Arquitetura: variação da categoria SIMD
● SIMT: um único fluxo de instruções e várias
Threads
● Kernel (incorporando threads) aplicado a
diferentes fluxos de dados
CPU x GPU
● Unidade lógica e aritmética (ULA) ou em inglês
Arithmetic Logic Unit (ALU)
Fluxo de um Programa em GPU
Memoria da GPU
● O conjunto de thread que
executam a mesma
instrução é chamado de
warp
MapReduce em GPU: Desafios
Cache da GPU é cera de 10x menor que a da
CPU.
Para se ter ideia da grandeza do problema do
acesso à memória, na NVIDIA GeForce 285
GTX, quase 7 operações de ponto flutuante
podem ser executadas por um núcleo no
mesmo tempo que um byte demora para ser
transferido da memória externa para a
GPU
MapReduce em GPU:Desafios
Uma vez que MapReduce é uma abordagem
para trabalhar com uma grande quantidade de
dados, implementá lo na GPU é um grande
desafio.
MapReduce em GPU
Propostas de MapReduce em GPU
● Mars: A MapReduce Framework for
Graphics Processors
● DisMaRC: A Distributed Map Reduce
Framework on CUDA
● MITHRA: Multiple data Independent Tasks
on a Heterogeneous Resource Architecture
MapReduce em GPU
Falaremos sobre a implementação :
Mars: A MapReduce Framework for
Graphics Processors
Mars: A MapReduce Framework
Dentre as linguagens
● OpenGL
● DirectX,
● NVIDIA CUDA
● AMD CTM
● Brook
● Accelerator
●
Mars foi implementado em CUDA
Mars: Metodologia
● Cada thread é resposável por uma tarefa de
Map ou um Reduce com um pequeno
número de par chave/valor como entrada.
● Desenvolveram um esquema lock-free para
gerenciar a escrita concorrente entre
diferentes threads
● Implementaram o em uma máquina com
uma NVIDIA GeForce 8800 GPU(G80) e um
intel Quad-core CPU
Mars: Metodologia
A GPU não pode buscar diretamente os dados do disco
rígido para a memória da GPU.
A CPU apoia essa tarefa em três fases:
1. Executa o I/O do arquivo na CPU e carregamos os
dados do arquivo em um buffer na memória principal.
2. A API, AddMapInputRecord, fornecida em Mars para
preparar os pares de entrada chave/valor do buffer na
memória principal.
3. Finalmente, os pares de entrada chave/valor são
copiados da memória principal para o memória da GPU
Mars: API
Mars: Configuração
Mars: Exemplo
Mars: Avaliação
Foram realizados testes para os seguintes
algoritmos
● String Match (SM)
● Inverted Index (II)
● Similarity Score (SS)
● Matrix Multiplication (MM)
● Page View Count (PVC):
● Page View Rank (PVR):
Mars: Avaliação
Configuração do hardware
Mars: Avaliação
Há melhoras de até 16
vezes no desempenho
Referências
[1] A. Ailamaki, N. Govindaraju, S. Harizopoulos
and D. Manocha. Query co-processing on
commodity processors. VLDB, 2006.
[2] AMD CTM,
http://ati.amd.com/products/streamprocessor/.
[3] Apache. Hadoop.
http://lucene.apache.org/hadoop/, 2006.
[4] D. Blythe. The Direct3D 10 system.
SIGGRAPH 2006.
[5] I. Buck, T. Foley, D. Horn, J. Sugerman, K.
Fatahalian, M. Houston and P. Hanrahan. Brook
for GPUs: Stream Computing on Graphics
Hardware. SIGGRAPH, 2004.
[6] C. Chu, S. Kim, Y. Lin, Y. Yu, G. Bradski, A.
Y. Ng and K. Olukotun. Map-Reduce for
machine learning on multicore. Neural
Information Processing Systems, 2007.
[7] D. Davis, R. Lucas, G. Wagenbreth and J.
Tran and J. Moore. A GPU-enhanced cluster for
accelerated FMS. High Performance Computing
Modernization Program Users' Group
Conference, 2007.
[8] J. Dean and S. Ghemawat. MapReduce:
Simplified Data Processing on Large Clusters.
OSDI, 2004.
[9] Z. Fan, F. Qiu, A. Kaufman and S. Y. Stover.
GPU cluster for high performance computing.
ACM/IEEE SuperComputing, 2004.
Referências
[10] J. Feng, S. Chakraborty, B. Schmidt, W.
Liu, U. D. Bordoloi. Fast Schedulability Analysis
Using Commodity Graphics Hardware. Proc. of
the 13th IEEE International Conference on
Embedded and Real-Time Computing Systems
and Applications, 2007.
[11] Folding@home, http://www.scei.co.
jp/folding.
[12] D. Göddeke, R. Strzodka, J. M. Yusof, P.
McCormick, S. Buijssen, M. Grajewski and S.
Turek. Exploring weak scalability for FEM
calculations on a GPU-enhanced cluster.
Parallel Computing 33:10-11. pp. 685-699.
2007.
[13] N. Govindaraju, J. Gray, R. Kumar and D.
Manocha. GPUTeraSort: high performance
graphics coprocessor sorting for large database
management. SIGMOD, 2006.
[14] A. Gress and G. Zachmann. GPU-ABiSort:
Optimal Parallel Sorting on Stream
Architectures. Proc. 20th IEEE Int'l Parallel and
Distributed Processing Symposium (IPDPS),
2006.
[15] B. He, N. Govindaraju, Q. Luo and B. Smith.
Efficient gather and scatter operations on
graphics processors. ACM/IEEE
Supercomputing, 2007.
[16] B. He, K. Yang, R. Fang, M. Lu, N. K.
Govindaraju, Q. Luo, and P. V. Sander.
Relational

Mais conteúdo relacionado

Semelhante a MapReduce em GPU: Uma abordagem para paralelização

Computação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware GráficoComputação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware GráficoThársis T. P. Souza
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsGPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsMarcos Gonzalez
 
Webinar i3geo julho_2013
Webinar i3geo julho_2013Webinar i3geo julho_2013
Webinar i3geo julho_2013Edmar Moretti
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopBig Data Week São Paulo
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Filipo Mór
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
 
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosPlanejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosRodrigo Campos
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Técnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDATécnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDAJose Ricardo da Silva Junior
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers tdc-globalcode
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadooptdc-globalcode
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 

Semelhante a MapReduce em GPU: Uma abordagem para paralelização (20)

MapReduce
MapReduceMapReduce
MapReduce
 
MapReduce
MapReduceMapReduce
MapReduce
 
Computação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware GráficoComputação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware Gráfico
 
Hadoop
HadoopHadoop
Hadoop
 
Palestra
PalestraPalestra
Palestra
 
TCC Apresentacao Final
TCC Apresentacao FinalTCC Apresentacao Final
TCC Apresentacao Final
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsGPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Webinar i3geo julho_2013
Webinar i3geo julho_2013Webinar i3geo julho_2013
Webinar i3geo julho_2013
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
 
Hadoop
HadoopHadoop
Hadoop
 
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosPlanejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Técnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDATécnicas avançadas de utilização de GPU e CUDA
Técnicas avançadas de utilização de GPU e CUDA
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoop
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 

Mais de Inael Rodrigues

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemInael Rodrigues
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reaisInael Rodrigues
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2Inael Rodrigues
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3Inael Rodrigues
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Inael Rodrigues
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Inael Rodrigues
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Inael Rodrigues
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiInael Rodrigues
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android Inael Rodrigues
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityInael Rodrigues
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Inael Rodrigues
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1Inael Rodrigues
 

Mais de Inael Rodrigues (17)

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de Pastagem
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reais
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2
 
Código limpo: Limites
Código limpo: LimitesCódigo limpo: Limites
Código limpo: Limites
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
Paa algoritmos gulosos
Paa  algoritmos gulososPaa  algoritmos gulosos
Paa algoritmos gulosos
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta Jabuti
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1
 

MapReduce em GPU: Uma abordagem para paralelização

  • 2. MapReduce: O que é isso? ● É um modelo de programação ● É um framework introduzido pelo Google ○ para suportar computações paralelas em grandes coleções de dados em clusters de computadores
  • 3. MapReduce query Cliente Base de dados central Obtém o resultado em uma operação síncrona Cliente query Bases de dados Executa a mesma query em cada fonte de dados simultaneamente
  • 5. MapReduce: Como funciona? ● Função Map ○ processa um par de entrada chave/valor e gera um resultado intermediários de chave/valor ● Função Reduce ○ Uni os os resultados intermediários associados mesma chave.
  • 6. MapReduce:Exemplos ● Contar palavras ● Contar frequência de acessos a uma URL ● Índice invertido ● Grep distribuído ● Sort distribuído
  • 9. MapReduce:Implementações ● Hadoop(hadoop.apache.org/docs/stable/mapred_tutorial.html) ● Disco(http://discoproject.org/) ● Skynet(http://skynet.rubyforge.org) ● Greenplun( http://www.greenplum.com/) ● FileMap(http://mfisk.github.com/filemap/ )
  • 10. MapReduce: Paralelo em CPU Evaluating MapReduce for Multi-core and Multiprocessor Systems Colby Ranger, Ramanan Raghuraman, Arun Penmetsa, Gary Bradski, Christos Kozyrakis∗ Computer Systems Laboratory Stanford University Phoenix, uma implementação de MapReduce para sistemas de memória compartilhada
  • 11. MapReduce: Paralelo em CPU ● Arquitetura SMP Simultaneous Multiprocessing: contem mais de um processador que permite trabalhar em paralelo ● CMP Chip-level Multiprocessing: tem vários núcleos de execução em uma única CPU. Basicamente temos determinados subconjuntos de componentes da cpu duplicados.
  • 12. MapReduce: Paralelo em GPU MapReduce e paralelizado a nível de ● CLUSTER(Hadoop) ● CPU(Phoenix) Seria possível paralelizar ainda mais o MapReduce a nível de GPU para obter melhor desempenho?
  • 13. Arquitetura de uma GPU moderna ● GPU: Unidade de Processamento Gráfico ● Arquitetura: variação da categoria SIMD ● SIMT: um único fluxo de instruções e várias Threads ● Kernel (incorporando threads) aplicado a diferentes fluxos de dados
  • 14. CPU x GPU ● Unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic Unit (ALU)
  • 15. Fluxo de um Programa em GPU
  • 16. Memoria da GPU ● O conjunto de thread que executam a mesma instrução é chamado de warp
  • 17. MapReduce em GPU: Desafios Cache da GPU é cera de 10x menor que a da CPU. Para se ter ideia da grandeza do problema do acesso à memória, na NVIDIA GeForce 285 GTX, quase 7 operações de ponto flutuante podem ser executadas por um núcleo no mesmo tempo que um byte demora para ser transferido da memória externa para a GPU
  • 18. MapReduce em GPU:Desafios Uma vez que MapReduce é uma abordagem para trabalhar com uma grande quantidade de dados, implementá lo na GPU é um grande desafio.
  • 19. MapReduce em GPU Propostas de MapReduce em GPU ● Mars: A MapReduce Framework for Graphics Processors ● DisMaRC: A Distributed Map Reduce Framework on CUDA ● MITHRA: Multiple data Independent Tasks on a Heterogeneous Resource Architecture
  • 20. MapReduce em GPU Falaremos sobre a implementação : Mars: A MapReduce Framework for Graphics Processors
  • 21. Mars: A MapReduce Framework Dentre as linguagens ● OpenGL ● DirectX, ● NVIDIA CUDA ● AMD CTM ● Brook ● Accelerator ● Mars foi implementado em CUDA
  • 22. Mars: Metodologia ● Cada thread é resposável por uma tarefa de Map ou um Reduce com um pequeno número de par chave/valor como entrada. ● Desenvolveram um esquema lock-free para gerenciar a escrita concorrente entre diferentes threads ● Implementaram o em uma máquina com uma NVIDIA GeForce 8800 GPU(G80) e um intel Quad-core CPU
  • 23. Mars: Metodologia A GPU não pode buscar diretamente os dados do disco rígido para a memória da GPU. A CPU apoia essa tarefa em três fases: 1. Executa o I/O do arquivo na CPU e carregamos os dados do arquivo em um buffer na memória principal. 2. A API, AddMapInputRecord, fornecida em Mars para preparar os pares de entrada chave/valor do buffer na memória principal. 3. Finalmente, os pares de entrada chave/valor são copiados da memória principal para o memória da GPU
  • 27. Mars: Avaliação Foram realizados testes para os seguintes algoritmos ● String Match (SM) ● Inverted Index (II) ● Similarity Score (SS) ● Matrix Multiplication (MM) ● Page View Count (PVC): ● Page View Rank (PVR):
  • 29. Mars: Avaliação Há melhoras de até 16 vezes no desempenho
  • 30. Referências [1] A. Ailamaki, N. Govindaraju, S. Harizopoulos and D. Manocha. Query co-processing on commodity processors. VLDB, 2006. [2] AMD CTM, http://ati.amd.com/products/streamprocessor/. [3] Apache. Hadoop. http://lucene.apache.org/hadoop/, 2006. [4] D. Blythe. The Direct3D 10 system. SIGGRAPH 2006. [5] I. Buck, T. Foley, D. Horn, J. Sugerman, K. Fatahalian, M. Houston and P. Hanrahan. Brook for GPUs: Stream Computing on Graphics Hardware. SIGGRAPH, 2004. [6] C. Chu, S. Kim, Y. Lin, Y. Yu, G. Bradski, A. Y. Ng and K. Olukotun. Map-Reduce for machine learning on multicore. Neural Information Processing Systems, 2007. [7] D. Davis, R. Lucas, G. Wagenbreth and J. Tran and J. Moore. A GPU-enhanced cluster for accelerated FMS. High Performance Computing Modernization Program Users' Group Conference, 2007. [8] J. Dean and S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI, 2004. [9] Z. Fan, F. Qiu, A. Kaufman and S. Y. Stover. GPU cluster for high performance computing. ACM/IEEE SuperComputing, 2004.
  • 31. Referências [10] J. Feng, S. Chakraborty, B. Schmidt, W. Liu, U. D. Bordoloi. Fast Schedulability Analysis Using Commodity Graphics Hardware. Proc. of the 13th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications, 2007. [11] Folding@home, http://www.scei.co. jp/folding. [12] D. Göddeke, R. Strzodka, J. M. Yusof, P. McCormick, S. Buijssen, M. Grajewski and S. Turek. Exploring weak scalability for FEM calculations on a GPU-enhanced cluster. Parallel Computing 33:10-11. pp. 685-699. 2007. [13] N. Govindaraju, J. Gray, R. Kumar and D. Manocha. GPUTeraSort: high performance graphics coprocessor sorting for large database management. SIGMOD, 2006. [14] A. Gress and G. Zachmann. GPU-ABiSort: Optimal Parallel Sorting on Stream Architectures. Proc. 20th IEEE Int'l Parallel and Distributed Processing Symposium (IPDPS), 2006. [15] B. He, N. Govindaraju, Q. Luo and B. Smith. Efficient gather and scatter operations on graphics processors. ACM/IEEE Supercomputing, 2007. [16] B. He, K. Yang, R. Fang, M. Lu, N. K. Govindaraju, Q. Luo, and P. V. Sander. Relational