Introdução as Unidades de Processamento Gráfico (GPUs) Giovane Roslindo Kuhn

Documentos relacionados
Utilização. de Shaders de efeitos realistas para jogos. Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

Bruno Pereira Evangelista.

Computação Gráfica. Renderização em Tempo Real. Erivaldo Xavier de Lima Filho

LICENCIATURA EM COMPUTAÇÃO PROCESSADOR TEGRA 2

Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação. Carlos Eduardo Rodrigues

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

Tecnologia AMD agregando valor

Um Tutorial sobre GPUs

Pipeline de Visualização Câmara Virtual

Programação em GPU: Passado, Presente e Futuro

Sistemas Computacionais II Professor Frederico Sauer

Gráficos e Físicos em Plataforma para Jogos

Sistema de Computação

Computação Gráfica. GLSL Programação de Shaders

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

Placa de vídeo em CUDA

Frederico Damasceno Bortoloti. Adaptado de: Claudio Esperança Paulo Roma Cavalcanti

OpenGL Shading Language

GLSL Programação de Shaders

E s p e c i f i c a ç õ e s

OpenGL. Alberto B. Raposo

VIRTUALIZAÇÃO CONVENCIONAL

SSC510 Arquitetura de Computadores. 12ª aula

Arquitetura e Programação de GPU. Leandro Zanotto RA: Anselmo Ferreira RA: Marcelo Matsumoto RA:

HARDWARE GRÁFICO. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

FACULDADE PITÁGORAS PRONATEC

Introdução. Dados. Imagens. 1. CG Computação Gráfica. 2. Paradigmas de Abstração

Tutorial: Como Instalar e fazer Funcionar o L2TNT.

Luiz Gonzaga da Silveira Jr

Geração Procedural de Terrenos em GPU

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Evolução dos Processadores

Computadores de Programação (MAB353)

Tecnologia AMD agregando valor ao dia-a-dia. Alfredo Heiss AMD Brasil

VPCSB15GB. Intel Core i5-2410m (2.30GHz com Turbo Boost até 2.90GHz) AMD Radeon HD 6470M (512MB) + Intel HD Graphics

Formação em game programming: 01 - Introdução à programação


Computação genérica de alto desempenho com GPUs

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

Informática. Aulas: 01 e 02/12. Prof. Márcio Hollweg. Visite o Portal dos Concursos Públicos

Ptex e outras ferramentas para modelagem de animação

O Hardware Dentro da Unidade do Sistema

Introdução a Virtualização. Sergio Roberto Charpinel Junior Profa. Roberta Lima Gomes

glslangel: Uma Ferramenta de Depuração para a Linguagem GLSL

REQUISITOS DO SISTEMA PARA A INSTALAÇÃO DE SOFTWARE

Aula 26: Arquiteturas RISC vs. CISC

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

BARRAMENTO DO SISTEMA

Taxa de Gravação da Memória RAM (MegaBytes / segundo) G5 2.7 Ghz (Mac) Linux Kernel

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS DEPARTAMENTO DE CIÊNCIAS DA COMUNICAÇÃO, ARTES. Diploma: Diploma de 1º Ciclo Total ECTS: 6

CONHEÇA MELHOR SEU COMPUTADOR

Linguagem de Programação I. Orientação a Objetos em Java

Fundamentos de Hardware

Processadores. Guilherme Pontes

Disciplina: Introdução à Informática Profª Érica Barcelos

Programação em GPU: Passado, presente e futuro

1.1. Gerenciamento de usuários e permissões. Suporta vários níveis de gerenciamento, gerenciamento de usuários e configuração de permissões.

COMPUTAÇÃO GRÁFICA REPRESENTAÇÃO DE IMAGENS

Capítulo 5. Figura 5.2. Conector para o monitor.

Contil Informática. Curso Técnico em Informática Processadores Core

nforce Serie 600i Recursos e Benefícios - MCP NVIDIA nforce 680i SLI

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Introdução ao OpenGL 2.1 e GLSL 1.2

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

NVIDIA. GEFORCE GT Série 600. Potencializando PCs Multimídia Premium

Barramento. Barramentos. Barramento. Barramento

Introdução. O que é GPU?

Aula 04 A. Barramentos. Prof. Ricardo Palma

Caravela: A Distributed Stream-based Computing Platform

Abstrações e Tecnologias Computacionais. Professor: André Luis Meneses Silva /msn: andreluis.ms@gmail.com Página: orgearq20101.wordpress.

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

REQUISITOS DO SISTEMA PARA A INSTALAÇÃO DE SOFTWARE

Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

Renan Teston Inácio. Visualização interativa de volumes com GPU

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Comandos de Manipulação

Manual Software CMS. Introdução:

Computação Gráfica. Introdução. Profª Alessandra Martins Coelho

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Sistemas de Computação. Dentro da Unidade do Sistema

UNIVERSIDADE CATÓLICA DE GOIÁS DEPARTAMENTO DE COMPUTAÇÃO GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

C++ ao resgate! Acelerando apps Android com instruções SIMD. Carlos Rafael Gimenes das Neves

VISEDU-CG 3.0: Aplicação didática para visualizar material educacional Módulo de Computação Gráfica

Construindo Sistemas de Gravação e Reprodução de Dados de Áudio, Vídeo e GPS com a Plataforma PXI

Evolução das CPUs: Dual e Quad Core

Fundamentos da Informática. História dos Computadores Prof. Hélder Almeida

Professor: Ronilson Morais Lobo. Salvador / 2015

Arquiteturas RISC. (Reduced Instructions Set Computers)

Barramentos - BUS. Professor Especialista: Airton Ribeiro de Sousa

Informática. Técnico em Agronegócio 1º. Módulo Profa. Madalena Pereira da Silva

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;


SISTEMAS DISTRIBUÍDOS

Uso de Imagens de Satélites em Operações de Inteligência. LAGF, Setembro de /09/2013 1

Engenharia Informática Computação Gráfica

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

8 Casos de teste Geração dos parâmetros de entrada

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Prof. José Maurício S. Pinheiro UniFOA

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Transcrição:

Introdução as Unidades de Processamento Gráfico (GPUs) Giovane Roslindo Kuhn

Computação Gráfica x Realidade

Consulta ao BD SELECT nome FROM Pessoa WHERE idade > 25

Sumário Pipeline Gráfico Fixo (Overview) Pipeline Gráfico Programável Porque os jogos avançaram tanto em realidade? GPU para Propósito Geral Pra que? Como? Exemplos? Tecnologias Correntes Considerações

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Vértices Coordenadas textura Normais Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Processador de Fragmentos Display

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Processador de Fragmentos Transforma vértices para coordenadas do mundo Transforma vértices para coordenadas da câmera Aplica iluminação Efetua clipping Transforma para coordenadas de tela Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Display

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Primitivas são decompostas em fragmentos Atributos dos fragmentos são a interpolação dos atributos vértices Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Processador de Fragmentos Texturização é aplicada Cor dos fragmentos são determinadas Diversas operações de rasterização são efetuadas Scissor-test, alpha-test, stencil-test, depth-test Blending, dithering, operações lógicas Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Display

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Processador de Fragmentos Display

Pipeline Gráfico Fixo (Overview) Modelo Processador de Vértices Rasterizador Processador de Fragmentos 1ª geração (1998) TNT2, Voodoo3 2ª geração (1999~2000) GeForce 2, ATI 7500, Savage3D Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Display

Paralelismo no Pipeline Modelo Processador de Vértices Rasterizador Processador de Fragmentos Processador de Vértices Processador de Fragmentos Processador de Vértices Processador de Fragmentos Processador de Fragmentos Processador de Fragmentos Fonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger Display

Pipeline Gráfico Programável Programar os processadores de fragmentos 3ª geração (2001~2002) GeForce 3 e 4, ATI 8500 Programar os processadores de vértices e fragmentos 4ª geração (2003~2006) GeForce FX, 6 e 7, ATI 9700 e 9800 Linguagens gráficas de alto-nível Cg NVidia HLSL Microsoft GLSL OpenGL Permitiram os avanços de realismo nos jogos

Modelos de Iluminação Gouraud shading (por vértice) Phong shading (por pixel)

Reflexão e Refração Reflexão Refração 1 desvio

Efeito Fresnel Refração 1 desvio Fresnel

Normal Map Dilatação Erosão

Normal Map + Fresnel Logo Estudante

Relief Map Vídeos Fonte: Manuel M. Oliveira (http://www.inf.ufrgs.br/~oliveira/rtm.html)

Shadow Map + Caustic Map Mapeamento de sombras e cáusticas

O que mais? Subsurface scattering Fonte: http://graphics.ucsd.edu/~henrik

O que mais? Fonte: http://graphics.ucsd.edu/~henrik Translucência

O que mais? Fonte: http://graphics.ucsd.edu/~henrik Translucência

Como Começo? Recomendo o programa FX Composer Suporte OpenGL e DirectX 9 Suporte HLSL, CgFX Dezenas de modelos prontos Perfeito para prototipar os shaders Centenas de exemplos prontos Programe apenas o seu shader Altere os parâmetros sem stress

Como Começo? Recomendo o programa FX Composer Suporte OpenGL e DirectX 9 Suporte HLSL, CgFX Dezenas de modelos prontos Perfeito para prototipar os shaders Centenas de exemplos prontos Programe apenas o seu shader Altere os parâmetros sem stress

Como Começo? Recomendo o programa FX Composer Suporte OpenGL e DirectX 9 Suporte HLSL, CgFX Dezenas de modelos prontos Perfeito para prototipar os shaders Centenas de exemplos prontos Programe apenas o seu shader Altere os parâmetros sem stress

Perguntas (1º parte) Giovane Roslindo Kuhn grkuhn@gmail.com

GPU para Propósito Geral Porque GPU em computação de propósito geral?

GPU para Propósito Geral Porque GPU em computação de propósito geral? Simular dinâmica de fluídos Demo da Nvidia [Liu et al. 2004]

GPU para Propósito Geral (cont.) Visualizar e interagir com dados científicos [Krüger et al. 2005]

GPU para Propósito Geral (cont.) Combinar sequências genéticas Modelo Junk Start F Junk R Junk N Del Junk T Del Del Junk Junk T P Del End Consulta F R G N T F T P R R T F N T F T P G R G T T F F P F N N N P N P F R G N F T F T P Base de Dados F R G T T F N P F N N N P N P P R G T N F T R F R N T F T P [Horn et al. 2005]

Queremos tudo isso......no nosso PC desktop...de modo que possamos interagir...de modo a obter resultados instantâneos

Queremos tudo isso......no nosso PC desktop...de modo que possamos interagir...de modo a obter resultados instantâneos Estamos na era do paralelismo em desktops

Paralelismo em Desktops Softwares mais rápidos precisam paralelismo 2x mais rápido ao dobrar número de cores

Paralelismo em Desktops Softwares mais rápidos precisam paralelismo 2x mais rápido ao dobrar número de cores Modelo P4 3GHz Ano 2004 Qtde. núcleos. 1 Perf. aritmética 6 GFLOPS Largura banda 6 GB/sec Valor Fonte: Kurt Akeley, Stanford

Paralelismo em Desktops Softwares mais rápidos precisam paralelismo 2x mais rápido ao dobrar número de cores Modelo P4 3GHz GF 5900 Ano 2004 2004 Qtde. núcleos. 1 8 Perf. aritmética 6 GFLOPS 20 GFLOPS Largura banda 6 GB/sec 25 GB/sec Valor Fonte: Kurt Akeley, Stanford

Paralelismo em Desktops Softwares mais rápidos precisam paralelismo 2x mais rápido ao dobrar número de cores Modelo P4 3GHz GF 5900 Ano 2004 2004 2007 Qtde. núcleos. 1 8 4 Perf. aritmética 6 GFLOPS 20 GFLOPS 96 GFLOPS Largura banda 6 GB/sec 25 GB/sec 21 GB/sec Valor Fonte: Kurt Akeley, Stanford Core2 Quad 3GHz $ 1100

Paralelismo em Desktops Softwares mais rápidos precisam paralelismo 2x mais rápido ao dobrar número de cores Modelo P4 3GHz GF 5900 Ano 2004 2004 2007 2006 Qtde. núcleos. 1 8 4 128 Perf. aritmética 6 GFLOPS 20 GFLOPS 96 GFLOPS 330 GFLOPS Largura banda 6 GB/sec 25 GB/sec 21 GB/sec 104 GB/sec $ 1100 $ 550 Valor Fonte: Kurt Akeley, Stanford Core2 Quad 3GHz GF 8800

Características GPU Diversos processadores paralelos (SIMD) Alta eficiência para processamento de streams Grande largura de banda para memória Suporte a ponto flutuante 32 bits

Estudo de Caso #1 (Matrizes) y00 y01 y02 = y10 y11 y12 x00 x01 x02 + y20 y21 y22 y = y + a.x a * x10 x11 x12 x20 x21 x22

Estudo de Caso #1 (Matrizes) y00 y01 y02 = y10 y11 y12 x00 x01 x02 + y20 y21 y22 a * y = y + a.x Implementação CPU for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j]; x10 x11 x12 x20 x21 x22

Stream de Dados CPU y00 y01 y02 y10 y11 y12 y20 y21 y22 Matrizes (i, j) Índices

Stream de Dados CPU GPU y00 y01 y02 y00 y01 y02 y10 y11 y12 y10 y11 y12 y20 y21 y22 y20 y21 y22 Matrizes Texturas (i, j) (s, t) Índices Coordenadas

Kernel de Processamento CPU for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j]; Loops internos

Kernel de Processamento CPU for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j]; Loops internos GPU y = texrect(texy, coord); x = texrect(texx, coord); return y + a * x; Programas de fragmentos

Kernel de Processamento CPU for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j]; Loops internos GPU y = texrect(texy, coord); x = texrect(texx, coord); return y + a * x; Programas de fragmentos

Executando Kernel Configurar OpenGL para desenhar 1:1 Desenhar quadrilátero (e.g. 3x3) glbegin(gl_quads); glvertex2f(0, 0); glvertex2f(0, 3); glvertex2f(3, 3); glvertex2f(3, 0); glend();

Executando Kernel Configurar OpenGL para desenhar 1:1 Desenhar quadrilátero (e.g. 3x3) glbegin(gl_quads); glvertex2f(0, 0); glvertex2f(0, 3); glvertex2f(3, 3); glvertex2f(3, 0); glend();

Executando Kernel Configurar OpenGL para desenhar 1:1 Desenhar quadrilátero (e.g. 3x3) glbegin(gl_quads); glvertex2f(0, 0); glvertex2f(0, 3); glvertex2f(3, 3); glvertex2f(3, 0); glend();

Overview do Mapeamento float4 somakernel(uniform samplerrect texy, uniform samplerrect texx, float2 coord: WPOS, uniform float a) { y = texrect(texy, coord); x = texrect(texx, coord); return y + a * x; } Modelo Processador de Vértices Rasterizador Processador de Fragmentos

Overview do Mapeamento float4 somakernel(uniform samplerrect texy, uniform samplerrect texx, float2 coord: WPOS, uniform float a) { y = texrect(texy, coord); x = texrect(texx, coord); return y + a * x; } x00 x01 x02 x10 x11 x12 y00 y01 y02 x20 x21 x22 y10 y11 y12 y20 y21 y22 Modelo Processador de Vértices Rasterizador Processador de Fragmentos

Overview do Mapeamento float4 somakernel(uniform samplerrect texy, uniform samplerrect texx, float2 coord: WPOS, uniform float a) { y = texrect(texy, coord); x = texrect(texx, coord); return y + a * x; } x00 x01 x02 x10 x11 x12 y00 y01 y02 x20 x21 x22 y10 y11 y12 y20 y21 y22 Modelo Processador de Vértices Rasterizador Processador de Fragmentos

Limitações Computacionais Sem heap Sem stack Sem scatter (a[i] = b) Sem operações de redução (max, min, sum) Número limitado de outputs

Emulando Operações de Redução Utilizam todos os elementos (max, min, sum) Utilizam log(n) passadas no pipeline 47 57 15 17 38 64 68 35 46 49 61 52 71 67 69 70

Emulando Operações de Redução Utilizam todos os elementos (max, min, sum) Utilizam log(n) passadas no pipeline 47 57 15 17 64 68 38 64 68 35 71 70 46 49 61 52 71 67 69 70 Máximo da região 2x2 1º passo

Emulando Operações de Redução float4 float4 float4 float4 return v1 = texrect(tex, coord); v2 = texrect(tex, coord+float2(1,0)); v3 = texrect(tex, coord+float2(1,1)); v4 = texrect(tex, coord+float2(0,1)); max(v1, max(v2, max(v3, v4))); 47 57 15 17 64 68 38 64 68 35 71 70 46 49 61 52 71 67 69 70 Máximo da região 2x2 1º passo

Emulando Operações de Redução float4 float4 float4 float4 return v1 = texrect(tex, coord); v2 = texrect(tex, coord+float2(1,0)); v3 = texrect(tex, coord+float2(1,1)); v4 = texrect(tex, coord+float2(0,1)); max(v1, max(v2, max(v3, v4))); 47 57 15 17 64 68 38 64 68 35 71 70 71 46 49 61 52 71 67 69 70 1º passo 2º passo

Estudo de Caso #2 (Massa-Mola) Sistemas massa-mola particulas conectadas por molas simulação de corpos rígidos Posição de cada partícula é dada: velocidade e aceleração (soma das forças aplicadas) força externa = gravidade, colisão, atrito, inércia força interna = força restauradora das molas

Calculando Forças Restauradoras [scatter] para cada mola calcule a força restauradora diminua a força na partícula esquerda soma a força na partícula direita

Calculando Forças Restauradoras [scatter] para cada mola calcule a força restauradora diminua a força na partícula esquerda soma a força na partícula direita

Calculando Forças Restauradoras [scatter] para cada mola calcule a força restauradora diminua a força na partícula esquerda soma a força na partícula direita

Calculando Forças Restauradoras [gatter] para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula

Calculando Forças Restauradoras [gatter] para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula

Simulando Sistema Massa-Mola 1º passo para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula 2º passo para cada partícula some forças restauradoras + forças externas calcule a aceleração com estas forças calcule a nova velocidade com aceleração calcule a nova posição com velocidade

Operações de BD [Govindaraju 2004] Avaliação de predicados (<, >, <=, >=,!=, =) utiliza depth-test para efetuar comparações Combinações booleanas (AND, OR, NOT) utiliza stencil-test para efetuar combinações Agregações (count, max, min, sum, avg) utiliza occlusion query para efetuar count Speedups de 2~4x

Simulações Baseadas em Física Fenômenos físicos pode ser aproximados com PDEs PDEs = equações diferenciais parciais integrar o estado de um objeto ao longo do tempo Evaporação d'água estado é temperatura

Simulações Baseadas em Física Fenômenos físicos pode ser aproximados com PDEs PDEs = equações diferenciais parciais integrar o estado de um objeto ao longo do tempo Evaporação d'água estado é temperatura Dinâmica de fluídos [Harris 2004] estado é velocidade e pressão

Simulações Baseadas em Física Fenômenos físicos pode ser aproximados com PDEs PDEs = equações diferenciais parciais integrar o estado de um objeto ao longo do tempo Evaporação d'água estado é temperatura Dinâmica de fluídos [Harris 2004] estado é velocidade e pressão Dinâmica de nuvens estado é velocidade, pressão e temperatura

Tecnologias Correntes Glift Estruturas de dados genéricas para GPU estilo STL N-trees, estruturas adaptativas, matrizes esparsas, iteradores Arquitetura unificada Um tipo de processador para diversas funções Vertíces, geometria, fragmentos CUDA e CTM, biblioteca para abstrair pipeline Hardwares atuais NVidia com GeForce 8800 Ultra ATI com Radeon HD 2900 XT NVidia Tesla GPU Computing Server

Tecnologias Correntes Glift Estruturas de dados genéricas para GPU estilo STL N-trees, estruturas adaptativas, matrizes esparsas, iteradores Arquitetura unificada Um tipo de processador para diversas funções Vertíces, geometria, fragmentos CUDA e CTM, biblioteca para abstrair pipeline Hardwares atuais NVidia com GeForce 8800 Ultra ATI com Radeon HD 2900 XT NVidia Tesla GPU Computing Server

Considerações Paralelismo em desktops é uma tendência Grandes fornecedores de CPU estão no mercado GPU Intel pesquisando GPUs AMD comprou ATI (Jul / 2006) Esforços para simplificar o desenvolvimento CUDA, CTM Universidades precisam ensinar paralelismo

Perguntas Giovane Roslindo Kuhn grkuhn@gmail.com

Links NVidia Developer Zone - http://developer.nvidia.com/page/home.html ATI Developer Zone - http://ati.amd.com/developer/index.html GPGPU - http://www.gpgpu.org/ OpenGL - http://www.opengl.org/ CMP249 Rendering Avançado - http://grkuhn.googlepages.com/cmp249 NVIDIA CUDA Homepage - http://developer.nvidia.com/object/cuda.html AMD Stream Processor - http://ati.amd.com/products/streamprocessor/index.html Chips NVidia - http://www.clubedohardware.com.br/artigos/519 Chips ATI - http://www.clubedohardware.com.br/artigos/520