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