Escolar Documentos
Profissional Documentos
Cultura Documentos
Alvaro Cuno Jos Ricardo Mello Viana Laboratrio de Computao Grfica - UFRJ
Roteiro
Contextualizao Caractersticas das GPUs Conceitos para programao
Arquitetura de um PC
GPU Alta largura de banda Alto poder de clculo
GPU: flexibilidade
GPU so altamente programveis {vertex , geometry , fragment } shader Linguagens de programao de alto nvel GPUs recentes suportam clculos de alta preciso 32 bits em todo o pipeline Preciso suficiente para a maioria das aplicaes
Indstria do entretenimento Tamanho -> economa de escala, Competitividade -> estimula a inovao
Pipeline grfico
Aplicao Computa geometria 3D e faz chamadas API grfica Transforma geometria 3D para 2D (em paralelo) Gera fragmentos a partir da geometria 2D (em paralelo) Combina fragmentos para formar uma imagem
Transformao
Rasterizao
Composio GPU
Programao em GPU
Caracteristicas: GPU vs. CPU Linguagens e ambientes Stream programming GPUs foram desenhados para rendering interativo e no para computao A memria das GPUs e as suas unidades de clculo so mais otimizadas para shading do que para GPGPU
Acesso a memria
Cached, sequential and random
Then ... locality, locality, locality A computao deve ser estruturada considerando acesso a memria seqncial
Acesso a memria
Memria de GPUs Projetada para acelerar filtragem de texturas Muito pequena para GPGPU Formatos foram otimizados para acessar vizinhanas em 2D Acesso de somente leitura Pentium 4 Taxas de freqncia extremamente altas Grande quantidade de Mbytes ExemploAcesso deacesso de padro de leitura e timo para GPUs: soma de dois escrita
vetores grandes
Acesso a memria
Memria de GPUs Projetada para acelerar filtragem de texturas Muito pequena para GPGPU Formatos foram otimizados para acessar vizinhanas em 2D Acesso de somente leitura Pentium 4 Taxas de freqncia extremamente altas Grande quantidade de Mbytes Acesso de leitura e escrita
Gather/Scatter
Gather: x = a[ i ] Scatter: a[ i ] = x
Operao de escrita atravs de ndice Operao comum em quicksort, hashing, etc. Difcil de implementar num fragment program No existe operao de escrita num endereo calculado Posio fixa no frame buffer
Gather/Scatter
Gather: x = a[ i ] Scatter: a[ i ] = x
Operao de escrita atravs de ndice Operao comum em quicksort, hashing, etc. Difcil de implementar num fragment program No existe operao de escrita num endereo calculado Posio fixa no frame buffer
Linguagens e ambientes
Linguagens de alto nvel Cg HLSL GLSL Linguagens para GPGPU Sh Brook Debuggers glslDevil gDEBugger Ambientes RenderMonkey FX composer 2
Recursos
http://www.graphicshardware.org http://www.gpgpu.org/
Bibliografia
Matt Pharr and Randima Fernando. Programming Techniques for High-Performance Graphics and General-Purpose Computation. GPUGems2 . AddisonWesley Professional, 2005
http://developer.nvidia.com/object/gpu_gems_2_home.html