(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.