O documento discute a implementação de MapReduce em GPUs (Unidades de Processamento Gráfico) para obter melhor desempenho. Ele descreve o framework Mars que mapeia as tarefas de Map e Reduce do MapReduce para threads em GPUs. Os testes com o Mars mostraram melhorias de até 16 vezes no desempenho em comparação com CPUs para alguns algoritmos como contagem de palavras e índice invertido. No entanto, implementar MapReduce em GPUs também apresenta desafios devido à menor memória cache e transferência de dados entre a CPU e GPU.
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
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.
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)
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
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
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