Вы находитесь на странице: 1из 9

Utilização de GPU para Sistemas de Paralelismo Massivo

Diego Pereira Domingos

Abstract dos, ou seja, sistemas que possuíam apenas um


núcleo de processamento e trabalhavam na forma
This article presents the techniques for Mas- sequencial de instruções, instrução por instrução.
sively Parallel Processing using GPUs (Graphic A cada nova geração de processadores, era notó-
Processor Unit). Here we discuss the architec- rio o ganho de desempenho em cima dos softwa-
ture of graphic processors and your technical fe- res, o que motivava cada vez mais os desenvolve-
atures. The text also presents a brief history of dores à aperfeiçoar suas aplicações, tornando-as
techinque which CPUs and GPUs are both used mais robustas e acompanhando o poder compu-
to compound high performance computing. How tacional que crescia juntamente com a frequência
a example, a brief study was done in AC Cluster, de operação (clock), dissipação de calor e con-
created by National Center for Supercomputing sumo de energia dos processadores [1]. Tal dissi-
Applications (NCSA). pação e consumo cresceram e atingiram um pa-

Resumo
tamar no qual se inviabilizou o crescimento do
clock dos processadores e abriu frente à uma nova
forma de se realizar a computação: através de
Este artigo apresenta as técnicas de utiliza- paralelismo computacional.
ção de GPUs (Graphic Processor Unit) em Siste- A computação paralela se baseia na execução
mas de Paralelismo Massivo. Discute-se ao longo de instruções de forma paralela. Sendo assim,
do texto a arquitetura dos processadores grá- vários núcleos de processamento são necessários.
cos, bem como suas características e funcionali- Com isso, teve-se um grande impacto no para-
dades. Apresenta-se também um breve histórico digma de desenvolvimento de programas de ma-
da técnica onde se utilizam hibridamente CPUs e neira sequencial, forçando os desenvolvedores a
GPUs para comporem clusters de computação de pensar em aplicações não como um grupo de ins-
alto desempenho. Como exemplo de aplicação, truções que operam sequencialmente, mas como
tem-se um breve estudo do cluster AC, criado no um grupo de operações que cooperam entre si
National Center for Supercomputing Applicati- para gerar um resultado único [1].
ons (NCSA).
Com isso, hoje temos CPUs multiprocessa-
das, como o exemplo do processador Intel i7,

1 Introdução com suporte à hyperthreading, um processador


contendo quatro núcleos de processamento com
Há algumas décadas, a computação no mundo propósito de desempenho de execução de aplica-
era vista sob o controle de sistemas uniprocessa- ções sequenciais, e também as GPUs, processa-

1
dores voltadas para aplicações paralelas, como é forma paralela, mas mantendo sua aparência se-
o caso da NVIDIA Geforce GTX 580, contendo quencial. Outro ponto importante é a questão
512 núcleos de processamento e cada um deles das grandiozas memórias caches, desenvolvidas
demasiadamente multithread, in-order e single- para lhe darem com aplicações grandes e com-
instruction. Nessa arquitetura, alguns processa- plexas, causando uma certa latência do desem-
dores compartilham entre si o controle e uma ca- penho. Já as GPUs se beneciam de memórias
che de instruções. com largura de banda até 10 vezes maiores que os
Essa mudança radical é referida como revolu- atuais CPUs. Fora isso, a forte demanda pela in-
ção da concorrência, e trouxe mudanças signi- dústria dos jogos têm alavancado o crescimento
cativas na indústria de processadores. Desde dos processadores grácos, os quais necessitam
2003 observa-se uma corrida de desempenho de paralelismo intenso para renderizações de telas
pontos utuantes [1]. Como resultado, verica- [1].
mos um crescimento exponencial de instruções
de pontos utuantes por segundo (FLOPS, do
inglês oating-point operations per second) para
Como alternativa aos enormes clusters con-
as GPUs, enquanto o crescimento no desempe-
tendo centenas de processadores, as GPUs são
nho das CPUs diminui a cada ano. Como pode-
utilizadas a m de se entregarem aparelhos com-
mos vericar na gura 1, em meados de 2008
pactos e poderosos, permitindo maior dissemi-
a diferença de desempenho para esse tipo de
nação do poder computacional. Hoje, tem-se a
cálculo (oating-points) eram de 10 vezes, 1000
utilização de GPUs nas mais diversas áreas da
GFLOPS para GPUs e 100 GFLOPS para CPUs.
ciência, tais como: cálculos em estruturas mole-
culares farmacêuticos, em estruturas biológicas,
genôma humano, turbulência em uidos, e diver-
sas outras áreas em que são necessários reconhe-
cimentos de padrões de imagens, como no caso
da ressonância eletromagnética [3].

O presente trabalho tem como objetivo o es-


tudo das GPUs como Sistemas de Paralelismo
Massivo (MPP, do inglês Massively Parallel Pro-

Figura 1: Desempenho CPU vs GPU cessors). Sendo assim, busca-se entender como
é a arquitetura de uma GPU, e como é possível
A defasagem mostrada no gráco da gura utiliza-la para realizações de cálculos massivos.
acima (gura 1.1) decorre das distintas losoas Ainda neste contexto, ter-se-á o estudo das tec-
empregadas em cada tipo de processador: no pri- nologias desenvolvidas para a facilitação e me-
meiro caso, as CPUs, possuem controles sostica- lhor aproveitamento da arquitetura Tesla, atual
dos para aplicar paralelismo em threads únicas, arquitetura das GPUs da NVIDIA, com a lingua-
ou até mesmo gerenciar instruções sequenciais de gem de programação CUDA.

2
2 Organização interna da GPU

Tipicamente, uma GPU é formada por ínumeros


processadores (na ordem de centenas e, atual-
mente, até milhares), organizados e projetados
de forma à aumentar o desempenho de parale-
lismo [7]. Sua organização e forma de proces-
samento leva à uma abordagem chamada SIMD
(single instruction, multiple data) de sistema.
Tal abordagem refere-se à maneira que os da-
dos são tratados: uma única instrução no pro-
cessador faz com que os vários dados que estejam
sendo processados num determinado instante se-
jam tratados da mesma maneira. Dessa forma,
cálculos de vetores e matrizes são facilitados, do
ponto de vista do processador, aumentando sua
eciência no processamento.
Com 7.1 bilhões de transistores e desenvolvida
Figura 2: Diagrama completo da arquitetura Ke-
para o crescente mercado de Tesla e computação
pler GK110
de alto desempenho (HPC), a arquitetura Kepler
BK110 da NVIDIA atinge o maior patarmar em
performance e complexidade já alcançado em um tura.

microprocessador [5]. Suas unidades de proces- Cada processador de streaming separa as thre-
samento grácos são compostas pelos chamados ads em grupos de 32 threads paralelas (chamados
processadores de streaming (SMXs), formados, Warps). Cada uma das quatro unidades de Warp
por sua vez por núcleos de processamento de Scheduler, por sua vez, seleciona um warp para
precisão única, totalmente pipelined e compos- ser executado, e duas de suas instruções indepen-
tos por unidades lógicas e aritméticas de pontos dentes, as quais serão enviadas de forma unitária
utuantes e inteiros [5]. Na gura 2.1 abaixo, para cada um dos dois Dispatches [5]. Assim,
verica-se a disposição dessas unidades no chip oito instruções são executadas paralelamente em
da GPU: um único ciclo no SMX. A gura 2.3 mostra o
funcionamento de uma unidade de Warp Sche-
duler em função do tempo:
2.1 Processadores de Streaming
Após as instruções serem carregadas pelo des-
Cada SMX (gura 2.2) é composto por 192 nú- pachador, elas são transmitidas para as Dispatch
cleos CUDA, uma cache de instruções, quatro Ports dos núcleos CUDA. Cada núcleo desses
Warp Scheduler (agendador de Warp), 8 Dispat- possui um coletor de operação, o qual irá cole-
ches (despachadores), uma cache de memória ní- tar a operação da instrução a ser executada. O
vel 1 de 64KB e uma cache de dados somente núcleo possui ainda unidades de lógica aritméti-
leitura de 48KB e 16 unidades de ltros de tex- cas para inteiros e pontos utuantes e, por serem

3
Figura 5: Organizaçao de um CUDA Core

2.2 Compartilhamento de dados entre


threads

No caso especíco da arquitetura GK110, threads


que fazem parte do mesmo warp não necessitam
Figura 3: Arquitetura de um processador strea- das tradicionais instruções de load-store através
ming (SMX) da memória compartilhada para compartilharem
dados. Ao invés disso, a arquitetura traz um me-
canismo chamado Shue Instruction. Através
de software, é possível criar permutações para
criar caminhos de compartilhamento (gura 2.4)
[8]. Assim, a cada interação, é possível escolher
quais threads irão enviar dados (origem da seta)
e quais threads poderão receber dados (seta).

Figura 6: Tipos de shue instructions


Figura 4: Funcionamento de um Warp Scheduler

Embora a arquitetura GK110 utilize essa fer-


ramenta para troca de dados intra-warp, as di-
fully pipelined, consegues um fetch de instrução versas comunicações de dados entre outras thre-
por ciclo de execução [11]. A gura 2.4 exempli- ads podem ser feitas através de instruções atô-
ca a organização interna de um CUDA Core: micas na memória compartilhada. Esses tipos

4
de instruções são muito importantes para a com- pensa seu tamanho e acarreta em uma eciência
putação paralela e largamente utilizada para al- desejável no sistema.
goritmos de classicação paralela e construções As caches de dados read-only possuem 48KB
de estrutura de dados em paralelo sem travar a e o tempo de vida de seus dados são dados pelo
serialização da execução da thread. Elas podem tempo de execução da função em execução. Este
oferecer o padrão leitura-modicação-escrita sem tipo de cache é benéco ao desempenho pois além
interrupção de outra thread. Além das tradi- de manter o caminho da cache L1 livre, possui
cionais instruções atômicas de adição, compare- uma largura de banda maior.
and-swap e exchange, a arquitetura GK110 ofe-
rece também Min, Max, And, Or e Xor, todas de
forma atômica. 3 GPUs em Sistemas de Parale-
lismo Massivo (MPP)
2.3 Hierarquia de memória
3.1 Comparativo: CPU e GPU
A gura 2.5 mostra a hierarquia de memória da
arquitetura em estudo. Cada SMX possui uma Os chips grácos, os quais no seu início eram fa-

memória on-chip que pode ser congurada (via bricados com o intuito único de processamento

software) em uma cache L1 de 16KB e uma me- gráco, vêm se tornando cada vez mais indis-

mória compartilhada de 48KB ou o inverso, uma pensáveis na computação multi-propósito. Por

cache L1 de 48KB e uma memória compartilhada volta do ano 2000, cientistas de computação e

de 16KB. das mais diversas áreas começaram a utilizar as


GPUs para acelerar muitas aplicações cientícas.
Tal advento se transformou em um movimento
chamado GPGPU, ou General-Purpose compu-
tation on GPU, referindo-se à computação multi-
propósito sob GPUs [7].
Contudo, a abordagem de processamento
SIMD forçou os desenvolvedores à repensar em
seus algoritmos: antes um programa era uma
sequência de instruções um a um, agora instru-
ções que executam alterações em diversos dados
de maneira paralela.
Atraídos pelo melhor custo-benefício e pelo
maior crescimento de desempenho ao longo dos
anos diante das CPUs, as GPUs estão cada vez
Figura 7: Hierarquia de memória da arquitetura mais fazendo parte dos grandes supercomputa-
GK110 dores [6]. Como exposto na seção anterior, a
NVIDIA já investe em arquiteturas de GPUs vol-
Embora pequena, as memórias compartilhadas tadas para o mercado de HPC, o que certamente
possuem uma latência bem pequena, o que com- alavancará ainda mais o uso desse tipo de arqui-

5
tetura nos supercomputadores.
A gura 3.1 mostra um comparativo de uma
GPU (GT240/CUDA) com processadores da In-
tel (i5) [10]. O comparativo foi baseado na quan-
tidade de operações por segundo de números de
pontos utuantes (FLOPs) para determinados
tamanhos de matrizes aplicando-se FFT (fast
fourier transform).
Figura 9: Gráco comparativo de desempenho e
largura de banda entre GPUs e CPUs

Inc. [6, 12]. Entretanto, a maioria deles foram


desenvolvidos para sistemas de visualização [6].
Somente nos últimos anos que esses tipos de clus-
ters vêm sendo explorados para ns de compu-
tação. Como exemplo dessa nalidade tem-se o
Figura 8: Comparativo de GPU vs Intel em de- cluster de GPU de 160 nós DQ em LANL, Lin-
sempenho de FFT coln, de 192 nós e AC, de 32 nós. Esses dois
últimos são baseados no sistema de computação
Como se pode aferir, a GPU leva vantagem em
NVIDIA Tesla S1070.
todos os casos. Entretanto, uma outra caracte-
Um cluster de GPU é formado basicamente por
rística que torna essa vantagem viável, é o fato
três componentes principais: nós host, GPUs e
das placas grácas possuirem uma maior razão de
uma rede de interconexão. Entretanto, deve-se
desempenho por potência consumida. A gura
atentar à memoria do host, barramento de PCIe
3.2 [10] mostra claramente a defasagem dessa ra-
e a rede de conexão, já que é necessário levar em
zão, conforme pode-se ver no gráco à esquerda.
consideração o desempenho das GPUs, a m de
Ainda nessa mesma gura, temos um outro grá-
se construir um sistema balanceado.
co que mostra a diferença entre a largura de
Na gura 3.3 mostra-se uma arquitetura típica
banda de memória. Em ambos os grácos é no-
de um nó de um cluster de GPU:
tório uma corrida de desempenho em pontos u-
tuantes que se inicia em 2003. Tal corrida é co- Um nó é composto tipicamente de duas a qua-

mumente nomeada como revolução da concorrên- tro GPUs (podendo conter mais), as quais são

cia, devido ao grande crescimento e importância interligadas ao Host através de uma conexão via

ao qual está se agregando aos processadores de PCI Express. Em particular, GPUs de alta tec-

processamento concorrente. nologia, como é o caso da NVIDIA Tesla, reque-


rem slots de PCIe Gen2 x16, o que lhe confere
um pico de largura de banda de 16GB/s [6, 15].
3.2 Clusteres de GPU
O Host por sua vez é composto por uma CPU
Vários clusters de GPU foram feitos nas déca- e uma memória principal. A quantidade de me-
das passadas, como é o caso do GraphStream, mória disponível no Host deve ser pelo menos a

6
3.3 Breve estudo do Cluster AC

O cluster AC, pertencente à National Center


of Supercomputing Applications (NCSA), é for-
mado por 32 nós contendo Hosts com um Works-
tation HP xw9400, cada um contendo duas CPUs
AMD Opteron dual-core, rodando em 2.4 GHz e
8GB de memória DDR2. Os hosts são interliga-
dos à um sistema de computação NVIDIA Tesla
S1070 através de duas interfaces PCIe Gen1 x16.
Para a interconexão Inniband, é utilizado um
Figura 10: Arquitetura de um nó típico de um adaptador QDR Inniband [6].
cluster de GPU

mesma quantidade disponível para as GPUs, a


m de se garantir sua completa utilização. Além
disso, garantir uma razão unitária entre CPUs e
GPUs também é desejável, a m de se facilitar o
desenvolvimento de aplicações baseadas em MPI
(message passing interface) [6].

Os nós são interligados via a tradicional Ether-


net ou Inniband (IB), a qual é uma rede de in-
terconexão utilizada em grande parte dos super-
computadores, de baixa latência, grande largura
de banda e que requer pouco processamento de
Figura 11: Organização do nó do cluster AC
overhead [14].

Embora todos esses pontos sejam necessários Ao todo, são 128 núcleos de CPU, 128 GPUs
para um bom e equilibrado projeto de um clus- e 32 aceleradores de unidade (S1070). Cada nó
ter de GPUs, diculdades como disponibilidade tem capacidade de um desempenho de pico men-
de sistema, energia, requerimentos mecânicos e o surado em 349.4 GFLOPS, dados em precisão
preço podem tornar a tarefa de combinar e ga- dupla (double-precision).
rantir todos os requisitos de um bom sistema re-
Entretanto, nos experimentos de [6], um nó foi
lativamente difícil.
capaz de um desempenho mensurado em 117.8
A utilização da CPU traz uma boa combinação GFlops (33.8% do pico esperado). É interessante
para o sistema, visto que um código contém par- notar que essa eciência se estabiliza em apro-
tes que devem ser executadas de forma sequênci- ximadamente 30% para maiores quantidades de
ais e partes que devem ser executadas de formas nós. Com 16 nós, contudo, o cluster AC é capaz
paralelas [7]. de chegar aos 1500 GFLOPS.

7
de até 20 vezes [7].

Por ser uma aplicação relativamente jovem, a


computação sob GPUs ainda tem muito o que
crescer. Com o crescimento de transistores por
área, tende-se a aumentar o número de núcleos
disponíveis nos processadores, bem como sua
complexidade. Diversas aplicações ainda podem
ser otimizadas para serem executadas de forma
híbrida, CPU-GPU, o que irão lhe conferir ga-
nhos em desempenho na ordem de dezenas de
vezes. Muitos estudos sobre certas otimizações
ainda estão sendo feitas, o que certamente ga-
rante que essa área da computação ainda aguarda
Figura 12: Desempenho e porcentagem dos picos
grandes avanços.
de desempenho no Cluster AC

4 Tecnologia e tendências 5 Conclusão

Aproveitando a tendência, a NVIDIA apostou As GPUs, ou processadores grácos, surgiram da


em dispositivos CUDA. Tais dispositivos tiveram necessidade de se processar imagens e vieram a
adaptações em seu hardware para facilitar o pro- ser utilizadas no meio da ciência para realização
gramador a utilizar a biblioteca da tecnologia, de cálculos que requerem um processamento pa-
com extensões para linguagens C e C++. Hoje, ralelo. Com o grande avanço desse tipo de arqui-
graças à essa tecnologia, é possível, em um com- tetura, descobriu-se uma grande gama de utili-
putador pessoal, realizar grandes cálculos através dades os quais esses processadores podem atuar.
da GPU instalada localmente [1]. Aplicações no campo da física, matemática, es-
Outra ferramenta criada e muito difundida é tudo de fármacos, estruturas biológicas e diversas
OpenCL (Open Computer Language), que na outras áreas do campo da ciência. Aproveitando
verdade é um ambiente de desenvolvimento cri- a tendência, as fabricantes de GPUs começaram
ado com a intenção de aumentar a performance a adaptar suas arquiteturas para sua utilização
de aplicações para supercomputadores, ou até em grandes clusteres, compostos hibridamente
mesmo dispositivos portáteis, utilizando a téc- por GPUs e CPUs.
nica de se executar um programa hibridamente Hoje uma GPU é capaz de realizar grandes
em CPU e GPU, escolhendo, para cada trecho, o quantidades de cálculos em matrizes e vetores,
local apropriado [16]. graças à sua arquitetura compondo centenas e
Muitas aplicações já se utilizam dessas técnicas até milhares de núcleos de processamento. Por
para maximizarem seu desempenho. Aplicações ser um campo relativamente novo na computa-
cientícas como MatLab, Mathematica e Amber ção, ainda se esperam muitos avanços, fazendo
já permitem sua execução em GPUs comerciais, o com que a curva de crescimento de desempenho
que podem lhe conferir um ganho de desempenho nesse tipo de processamento ainda continue ex-

8
ponencial por um bom tempo. [12] (2012) GraphStrem, In. [Online]. Disponível
em http://www.graphstream.com

[13] KOMATSU, Kazuhiko. Parallel processing


of the Building-Cube Method on a GPU plat-
Referências form. 2011.

[1] KIRK, David B; HWU, Wen-mei W. Pro- [14] (2012) Inniband Trade Associa-

gramming Massively Parallel Processors. tion WebSite. [Online]. Disponível em

Burlington: Elsevier, 2010. http://www.innibandta.org.

[2] LINTZMAYER, Carla Négri; BOGUE, Edu- [15] J. Coleman, P. Taylor, Hardware Level IO

ardo Theodoro; SAMBINELLI, Maycon. Me- Benchmarking of PCI Express, Intel White

mória Transacional. Paper, December 2008

[3] CULLER, David. SINGH, Jaswinder Pal. Pa- [16] (2012) Khronos WebSite. [Online]. Disponí-

rallel Computer Architecture. Morgan Kauf- vel em: http://www.khronos.org/opencl/

mann, 2007.

[4] GTX 680 Kepler WhitePaper, 2012.

[5] NVIDIA Next Generation CUDA Computer


Architecture: Kepler GK110, 2012.

[6] KINDRATENKO, Volodymyr V. et al. GPU


Clusters for High-Performance Computing.

[7] (2012) Website da NVIDIA Co. Disponí-


vel em http://www.nvidia.com/object/what-
is-gpu-computing.html

[8] (2012) NYLAND, Lars; JONES,


Stephen. Inside Kepler. Disponível em
http://developer.download.nvidia.com

[9] Flexibility: The Dell approach to HPC GPU


computing, 2011.

[10] GPGPU COTS Plataforms. High-


Performance Computing Solutions. GE.
20

[11] NVIDIA's Next Generation CUDA Compu-


ter Architecture: Fermi, 2009.

Вам также может понравиться