sexta-feira, 16 de dezembro de 2011

Unidade de Processamento Gráfico de Propósito Geral (GPGPU)


(Resenha Capítulo 10)

A Unidade de Processamento Gráfico ou GPU (do inglês Graphics Processing Unit) é um tipo de microprocessador voltado para processar dados gráficos (como imagens e modelos 3D). Elas são comumente utilizadas em computadores pessoais, estações de trabalho e videogames. As GPUs computam fluxos de dados e cálculos aritméticos com grande eficiência. Além disso, é possível encontrar processadores gráficos com preço acessível. Porem, estas não lidam bem com códigos seqüenciais ou recursivos.
 Tendo em vista essa característica das GPUs, começou-se a pensar na possibilidade de utilizar processadores gráficos para computar aplicações que são normalmente executadas em processadores comuns a fim de se obter um melhor desempenho. Surgindo, assim, uma nova técnica, a Unidade de Processamento Gráfico de Propósito Geral ou GPGPU (do inglês General Purpose Graphics Processing Unit), que utiliza a GPU não apenas para tarefas de renderização gráfica, mas também para outras aplicações como inteligência artificial e cálculos numéricos.

Figura1 - Comparação entre CPUs e GPUs modernas em FLOPS

A Figura 1 deixa claro o porquê de existirem tantas pesquisas no uso de GPUs para processamento geral. Nela podemos ver que o poder de computação (em FLOPS) de GPUs modernas são mais fortes que os de CPUs. Alem disso, os processadores gráficos possuem uma taxa de evolução de desempenho mais rápida que a Lei de Moore. Ou seja, se continuar nesse ritmo, a distância entre CPUs e GPUs tende a cresce.
Outro ponto importante está no progresso da plataforma de software utilizada nos processadores gráficos. Inicialmente pesquisadores tinham construir instruções assembly para comandar a computação na GPU. Mas, hoje em dia, linguagens como HLSL e OpenGL tornaram mais fácil de escrever o código de hardware. A interface CUDA possibilitou a pessoas não familiarizadas com computação gráfica tirassem vantagem do uso da GPU em suas aplicações de computação.
É possível encontrar diversas aplicações baseadas em GPGPU recentes para as áreas de geociência, finanças, física e etc. Todas elas envolvem computação intensiva e tarefas com processamento altamente paralelo. Uma dessas aplicações é o calculo de operações de álgebra linear, que envolve o processamento de matrizes, onde os dados das matrizes podem ser separados em blocos e calculados separada e paralelamente. Outra aplicação utiliza GPU pra calcular operações de Banco de Dados, executando operações de “busca relacional” (relational query), seleção conjunta e operações de agregação. Aplicações de simulação de fluido utilizam cálculos massivos de equações diferenciais que podem ser processadas de forma mais eficiente com o uso de GPUs.
Na Literatura pode-se encontra diversas outras aplicações baseadas em GPGPU que conseguiram melhor desempenho do que quando usadas com processadores convencionais. Isso faz concluir que essa abordagem na verdade representa mais uma possibilidade de técnica que podem ser utilizadas para conseguir um melhor desempenho computacional. Assim, o uso de uma CPU ou GPU em uma determinar situação irá depender das características da aplicação.


Principais Referências:
  • Liu, Younquan & Wu, Enhua. Emerging Technology about GPGPU. Circuits and Systems, 2008. APCCAS 2008. IEEE Asia Pacific Conference.
  • Crow, Thomas S. Evolution of the Graphical Processing Unit. University of Nevada. Dezembro, 2004.
  • Dinh, Minh T. GPUs - Graphics Processing Units. Institute of Computing Science, University of Innsbruck. Julho, 2008.

Nenhum comentário:

Postar um comentário