GPU Programming

Propaganda
GPU Programming
Frederico José Camiloti Dalllalana
Orientador: Prof. Dr. Luis Gustavo Nonato
Tópicos
Introdução
Evolução das GPUs
GPU Programming
Cg – C for graphics
Aplicações
Conclusão
Bibliografia
Introdução
O que é GPU?
– Nvidia
– ATI
Introdução
GPU x CPU
X
Introdução
GPU x CPU
Processador
Número de Transistor
(em milhões)
Intel Pentium 4 2.4 Ghz
55
Nvidia GeForce FX 5800
125
Fonte: http://www.inf.ufrgs.br/~comba/gh-files/talk1.pdf
Introdução
GPU x CPU
“Pesquisadores do Stanford Graphics mostram
números supreendentes: uma NVIDIA GeForce FX
5900 alcança o índices altíssimos, de 20 Gigaflops, o
equivalente a 20 bilhões de operações com ponto
flutuante por segundo. Um Pentium 4 precisaria
ultrapassar os 10GHz para alcançar o mesmo
desempenho”
Fonte: http://www.estudehardware.com.br/artigo_gpu_cpu.htm
Evolução das GPUs
Pré-História
Arquiteturas de Gráficos Integrada
Evolução das GPUs
1ª Geração(até 1998)
– Rastering de triângulos pré-transformados
– Aplica uma ou duas texturas
– Implenta as características do DirectX 6
Evolução das GPUs
1º Geração(até 1998)
– Nvidia TNT2
Evolução das GPUs
1º Geração(até 1998)
– 3dfx Voodoo3
Evolução das GPUs
1ª Geração(até 1998)
– ATI Rage
Evolução das GPUs
2ª Geração(1999-2000)
– T&L – Transform & Lighting por hardware
– Implementa as características do DirectX 7
Evolução das GPUs
2ª Geração(1999-2000)
– Nvidia GeForce2
Evolução das GPUs
2ª Geração(1999-2000)
– ATI Radeon 7500
Evolução das GPUs
3ª Geração(2001)
– Texturas 3D
– Implementa as características do DirectX 8
Evolução das GPUs
3ª Geração(2001)
– Nvidia GeForce3, GeForce4 Ti
Evolução das GPUs
3ª Geração(2001)
– ATI Radeon 8500
Evolução das GPUs
4ª Geração(2002 - 2003)
– Programação de Vertex e Fragmentos
– Implementa as características do Directx 9
– Suporte de 32 bits a pontos flutuantes
Evolução das GPUs
4ª Geração(2002 - 2003)
– Nvidia GeForceFX
Evolução das GPUs
4ª Geração(2002 - 2003)
– ATI Radeon 9700
GPU Programming
Bump Mapping
– Usado para criar
imperfeições na
superfície do objeto
3D, tornando-o
mais realista
GPU Programming
T & L – Transform & Lighting
– Permite que parte dos cálculos necessários
para gerar imagens 3D sejam executados
pela GPU, e não pela CPU
– Passou a ser executado pela GPU a partir da
linha GeForce
– Foi implementado a partir do DirectX 7.0
Observação
Não adianta a GPU ter suporte
a T&L se na implementação
você não usar este recurso
GPU Programming
Vertex Shader
– Permite mudar as características de cada
vértice de cada polígono
GPU Programming
Pixel Shader
–Permite ao programador mudar
cada pixel de cada polígono
GPU Programming
Shader
– Versão 3.0
– Permite que o Pixel Shader execute até
65535 instruções por vez
Cg – C for Graphics
O que é?
– Foi desenvolvida pela Nvidia
– Versão Cg 1.3 Beta 2
– Linguagem C-like
Cg – C for Graphics
– Linguagem de programação para GPU
– Permite a programação de efeitos como
reflexão/refração em tempo real
– Linguagem de alto nível
Cg – C for Graphics
– Integração com APIs gráficas, como OpenGL
e Direct3D
– Compilação Dinâmica: permite otimização de
código para a placa em que vai rodar
– Roda em placas da ATI
Cg – C for Graphics
Substitui o Assembly
Cg – C for Graphics
Cg- C for Graphics
Exemplo de Código
Aplicações
Rendering
– Tempo real
Operações Matemáticas
Conclusão
Libera a CPU do processamento gráfico
Código otimizado para cada GPU
Desempenho das aplicações
Bibliografia
http://developer.nvidia.com/
http://www.inf.ufrgs.br/~comba
http://developer.nvidia.com/page/cg_main.html
http://msdn.microsoft.com/library/default.asp?url
=/library/en-us/dndir3d/html/dxvertex.asp
Download