Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo...

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

Transcript of Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo...

Page 1: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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

Giovane Roslindo KuhnGiovane Roslindo Kuhn

Page 2: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Computação Gráfica x RealidadeComputação Gráfica x Realidade

Page 3: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Consulta ao BDConsulta ao BD

SELECT nome FROM Pessoa WHERE idade > 25SELECT nome FROM Pessoa WHERE idade > 25

Page 4: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

SumárioSumário• Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

• Pipeline Gráfico ProgramávelPipeline Gráfico Programável– Porque os jogos avançaram tanto em realidade?Porque os jogos avançaram tanto em realidade?

• GPU para Propósito GeralGPU para Propósito Geral– Pra que? Como? Exemplos?Pra que? Como? Exemplos?

• Tecnologias CorrentesTecnologias Correntes

• ConsideraçõesConsiderações

Page 5: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

VérticesVérticesCoordenadas texturaCoordenadas texturaNormaisNormais

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Page 6: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Transforma vértices para coordenadas do mundoTransforma vértices para coordenadas do mundoTransforma vértices para coordenadas da câmeraTransforma vértices para coordenadas da câmeraAplica iluminaçãoAplica iluminaçãoEfetua clippingEfetua clippingTransforma para coordenadas de telaTransforma para coordenadas de tela

Page 7: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Primitivas são decompostas em fragmentosPrimitivas são decompostas em fragmentosAtributos dos fragmentos são a interpolação dos atributos vérticesAtributos dos fragmentos são a interpolação dos atributos vértices

Page 8: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Texturização é aplicadaTexturização é aplicadaCor dos fragmentos são determinadasCor dos fragmentos são determinadasDiversas operações de rasterização são efetuadasDiversas operações de rasterização são efetuadasScissor-test, alpha-test, stencil-test, depth-testScissor-test, alpha-test, stencil-test, depth-testBlending, dithering, operações lógicasBlending, dithering, operações lógicas

Page 9: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Page 10: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico Fixo (Pipeline Gráfico Fixo (OverviewOverview))

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

• 1ª geração (1998) – TNT2, Voodoo31ª geração (1998) – TNT2, Voodoo3

• 2ª geração (1999~2000) – GeForce 2, ATI 7500, Savage3D2ª geração (1999~2000) – GeForce 2, ATI 7500, Savage3D

Page 11: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo no PipelineParalelismo no Pipeline

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Display

Fonte: Comba, Dietrich, Oliveira, Pagot, ScheideggerFonte: Comba, Dietrich, Oliveira, Pagot, Scheidegger

Processador de

Vértices

Processador de

Vértices

Processadorde

Fragmentos

Processadorde

Fragmentos

Processadorde

Fragmentos

Processadorde

Fragmentos

Page 12: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Pipeline Gráfico ProgramávelPipeline Gráfico Programável• Programar os processadores de fragmentosProgramar os processadores de fragmentos

– 3ª geração (2001~2002) – GeForce 3 e 4, ATI 8500 3ª geração (2001~2002) – GeForce 3 e 4, ATI 8500

• Programar os processadores de vértices e fragmentosProgramar os processadores de vértices e fragmentos– 4ª geração (2003~2006) – GeForce FX, 6 e 7, ATI 9700 e 98004ª geração (2003~2006) – GeForce FX, 6 e 7, ATI 9700 e 9800

• Linguagens gráficas de alto-nívelLinguagens gráficas de alto-nível– Cg – NVidiaCg – NVidia– HLSL – MicrosoftHLSL – Microsoft– GLSL – OpenGLGLSL – OpenGL

• Permitiram os avanços de realismo nos jogosPermitiram os avanços de realismo nos jogos

Page 13: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Modelos de IluminaçãoModelos de Iluminação

Gouraud shading (por vértice)Gouraud shading (por vértice) Phong shading (por pixel)Phong shading (por pixel)

Page 14: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Reflexão e RefraçãoReflexão e Refração

ReflexãoReflexão Refração 1 desvioRefração 1 desvio

Page 15: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Efeito FresnelEfeito Fresnel

Refração 1 desvioRefração 1 desvio FresnelFresnel

Page 16: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Normal MapNormal Map

DilataçãoDilatação ErosãoErosão

Page 17: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Normal Map + FresnelNormal Map + Fresnel

LogoLogo EstudanteEstudante

Page 18: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Relief MapRelief Map

VídeosVídeos

Fonte: Manuel M. Oliveira (http://www.inf.ufrgs.br/~oliveira/RTM.html)Fonte: Manuel M. Oliveira (http://www.inf.ufrgs.br/~oliveira/RTM.html)

Page 19: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Shadow Map + Caustic MapShadow Map + Caustic Map

Mapeamento de sombras e cáusticasMapeamento de sombras e cáusticas

Page 20: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

O que mais?O que mais?

Subsurface scatteringSubsurface scattering

Fonte: http://graphics.ucsd.edu/~henrikFonte: http://graphics.ucsd.edu/~henrik

Page 21: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

O que mais?O que mais?

TranslucênciaTranslucênciaFonte: http://graphics.ucsd.edu/~henrikFonte: http://graphics.ucsd.edu/~henrik

Page 22: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

O que mais?O que mais?

TranslucênciaTranslucênciaFonte: http://graphics.ucsd.edu/~henrikFonte: http://graphics.ucsd.edu/~henrik

Page 23: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Como Começo?Como Começo?• Recomendo o programa FX ComposerRecomendo o programa FX Composer

– Suporte OpenGL e DirectX 9Suporte OpenGL e DirectX 9– Suporte HLSL, CgFXSuporte HLSL, CgFX– Dezenas de modelos prontosDezenas de modelos prontos

• Perfeito para prototipar os shadersPerfeito para prototipar os shaders– Centenas de exemplos prontosCentenas de exemplos prontos– Programe apenas o seu shaderPrograme apenas o seu shader– Altere os parâmetros sem stressAltere os parâmetros sem stress

Page 24: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Como Começo?Como Começo?• Recomendo o programa FX ComposerRecomendo o programa FX Composer

– Suporte OpenGL e DirectX 9Suporte OpenGL e DirectX 9– Suporte HLSL, CgFXSuporte HLSL, CgFX– Dezenas de modelos prontosDezenas de modelos prontos

• Perfeito para prototipar os shadersPerfeito para prototipar os shaders– Centenas de exemplos prontosCentenas de exemplos prontos– Programe apenas o seu shaderPrograme apenas o seu shader– Altere os parâmetros sem stressAltere os parâmetros sem stress

Page 25: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Como Começo?Como Começo?• Recomendo o programa FX ComposerRecomendo o programa FX Composer

– Suporte OpenGL e DirectX 9Suporte OpenGL e DirectX 9– Suporte HLSL, CgFXSuporte HLSL, CgFX– Dezenas de modelos prontosDezenas de modelos prontos

• Perfeito para prototipar os shadersPerfeito para prototipar os shaders– Centenas de exemplos prontosCentenas de exemplos prontos– Programe apenas o seu shaderPrograme apenas o seu shader– Altere os parâmetros sem stressAltere os parâmetros sem stress

Page 26: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Perguntas (1º parte)Perguntas (1º parte)

Giovane Roslindo KuhnGiovane Roslindo [email protected]@gmail.com

Page 27: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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

Page 28: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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

Simular dinâmica de fluídosSimular dinâmica de fluídos

Demo da NvidiaDemo da Nvidia [Liu et al. 2004][Liu et al. 2004]

Page 29: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

GPU para Propósito Geral GPU para Propósito Geral (cont.)(cont.)

Visualizar e interagir com dados científicosVisualizar e interagir com dados científicos

[Krüger et al. 2005][Krüger et al. 2005]

Page 30: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

GPU para Propósito Geral GPU para Propósito Geral (cont.)(cont.)

Combinar sequências genéticasCombinar sequências genéticas

[Horn et al. 2005][Horn et al. 2005]

Modelo

Consulta

FR

NT

TP

F

G

FR

N

T

TP

F

G

F

FRNT

TP

F

GR

TT

FP

F

G

FR

TT

NP

F

GFNNN

NP

P

RR

F

T

TP

F

T

N

FNNN

NP

P

PR

TN

TR

F

G

Base de Dados

Junk

Junk Junk Junk Junk Junk

Del Del Del Del

Start EndF R N T PT

Page 31: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Queremos tudo isso...Queremos tudo isso...• ...no nosso PC desktop...no nosso PC desktop

• ...de modo que possamos interagir...de modo que possamos interagir

• ...de modo a obter resultados instantâneos...de modo a obter resultados instantâneos

Page 32: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Queremos tudo isso...Queremos tudo isso...• ...no nosso PC desktop...no nosso PC desktop

• ...de modo que possamos interagir...de modo que possamos interagir

• ...de modo a obter resultados instantâneos...de modo a obter resultados instantâneos

• Estamos na era do paralelismo em desktopsEstamos na era do paralelismo em desktops

Page 33: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo em DesktopsParalelismo em Desktops• Softwares mais rápidos precisam paralelismoSoftwares mais rápidos precisam paralelismo

• 2x mais rápido ao dobrar número de cores2x mais rápido ao dobrar número de cores

Page 34: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo em DesktopsParalelismo em Desktops• Softwares mais rápidos precisam paralelismoSoftwares mais rápidos precisam paralelismo

• 2x mais rápido ao dobrar número de cores2x mais rápido ao dobrar número de cores

Qtde. núcleos.

Perf. aritmética

Largura banda

Ano

Modelo

1

6 GFLOPS

6 GB/sec

2004

P4 3GHz

Valor

Fonte: Kurt Akeley, StanfordFonte: Kurt Akeley, Stanford

Page 35: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo em DesktopsParalelismo em Desktops• Softwares mais rápidos precisam paralelismoSoftwares mais rápidos precisam paralelismo

• 2x mais rápido ao dobrar número de cores2x mais rápido ao dobrar número de cores

Qtde. núcleos.

Perf. aritmética

Largura banda

Ano

Modelo

1

6 GFLOPS

6 GB/sec

2004

P4 3GHz

Valor

8

20 GFLOPS

25 GB/sec

2004

GF 5900

Fonte: Kurt Akeley, StanfordFonte: Kurt Akeley, Stanford

Page 36: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo em DesktopsParalelismo em Desktops• Softwares mais rápidos precisam paralelismoSoftwares mais rápidos precisam paralelismo

• 2x mais rápido ao dobrar número de cores2x mais rápido ao dobrar número de cores

Qtde. núcleos.

Perf. aritmética

Largura banda

Ano

Modelo

1

6 GFLOPS

6 GB/sec

2004

P4 3GHz

4

96 GFLOPS

21 GB/sec

2007

Core2 Quad 3GHz

Valor $ 1100

8

20 GFLOPS

25 GB/sec

2004

GF 5900

Fonte: Kurt Akeley, StanfordFonte: Kurt Akeley, Stanford

Page 37: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Paralelismo em DesktopsParalelismo em Desktops• Softwares mais rápidos precisam paralelismoSoftwares mais rápidos precisam paralelismo

• 2x mais rápido ao dobrar número de cores2x mais rápido ao dobrar número de cores

Qtde. núcleos.

Perf. aritmética

Largura banda

Ano

Modelo

1

6 GFLOPS

6 GB/sec

2004

P4 3GHz

4

96 GFLOPS

21 GB/sec

2007

Core2 Quad 3GHz

Valor $ 1100

8

20 GFLOPS

25 GB/sec

2004

GF 5900

128

330 GFLOPS

104 GB/sec

2006

GF 8800

$ 550

Fonte: Kurt Akeley, StanfordFonte: Kurt Akeley, Stanford

Page 38: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Características GPUCaracterísticas GPU• Diversos processadores paralelos (SIMD)Diversos processadores paralelos (SIMD)

• Alta eficiência para processamento de streamsAlta eficiência para processamento de streams

• Grande largura de banda para memóriaGrande largura de banda para memória

• Suporte a ponto flutuante 32 bitsSuporte a ponto flutuante 32 bits

Page 39: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Estudo de Caso #1 (Matrizes)Estudo de Caso #1 (Matrizes)

x00 x01 x02

x10 x11 x12

x20 x21 x22

y00 y01 y02

y10 y11 y12

y20 y21 y22

a= + *

y = y + a.xy = y + a.x

Page 40: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Estudo de Caso #1 (Matrizes)Estudo de Caso #1 (Matrizes)

x00 x01 x02

x10 x11 x12

x20 x21 x22

y00 y01 y02

y10 y11 y12

y20 y21 y22

a= + *

y = y + a.xy = y + a.x

for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j];

Implementação CPUImplementação CPU

Page 41: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

StreamStream de Dados de Dados

CPUCPU

MatrizesMatrizes

ÍndicesÍndices

y00 y01 y02

y10 y11 y12

y20 y21 y22

(i, j)

Page 42: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

StreamStream de Dados de Dados

CPUCPU GPUGPU

MatrizesMatrizes TexturasTexturas

ÍndicesÍndices CoordenadasCoordenadas

y00 y01 y02

y10 y11 y12

y20 y21 y22

y00 y01 y02

y10 y11 y12

y20 y21 y22

(i, j) (s, t)

Page 43: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j];

KernelKernel de Processamento de ProcessamentoCPUCPU

Loops internosLoops internos

Page 44: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j];

KernelKernel de Processamento de ProcessamentoCPUCPU

GPUGPU

Loops internosLoops internos

Programas de fragmentosProgramas de fragmentos

y = texRect(texY, coord);x = texRect(texX, coord);return y + a * x;

Page 45: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

for (int i=0; i<3; i++) for (int j=0; j<3; j++) y[i][j] = y[i][j] + a * x[i][j];

KernelKernel de Processamento de ProcessamentoCPUCPU

GPUGPU

Loops internosLoops internos

Programas de fragmentosProgramas de fragmentos

y = texRect(texY, coord);x = texRect(texX, coord);return y + a * x;

Page 46: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Executando Executando KernelKernel• Configurar OpenGL para desenhar 1:1Configurar OpenGL para desenhar 1:1

• Desenhar quadrilátero (e.g. Desenhar quadrilátero (e.g. 3x33x3))

glBegin(GL_QUADS); glVertex2f(0, 0); glVertex2f(0, 3); glVertex2f(3, 3); glVertex2f(3, 0);glEnd();

Page 47: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Executando Executando KernelKernel• Configurar OpenGL para desenhar 1:1Configurar OpenGL para desenhar 1:1

• Desenhar quadrilátero (e.g. Desenhar quadrilátero (e.g. 3x33x3))

glBegin(GL_QUADS); glVertex2f(0, 0); glVertex2f(0, 3); glVertex2f(3, 3); glVertex2f(3, 0);glEnd();

Page 48: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Executando Executando KernelKernel• Configurar OpenGL para desenhar 1:1Configurar OpenGL para desenhar 1:1

• Desenhar quadrilátero (e.g. Desenhar quadrilátero (e.g. 3x33x3))

glBegin(GL_QUADS); glVertex2f(0, 0); glVertex2f(0, 3); glVertex2f(3, 3); glVertex2f(3, 0);glEnd();

Page 49: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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;}

OverviewOverview do Mapeamento do Mapeamento

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

Page 50: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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

x20 x21 x22

OverviewOverview do Mapeamento do Mapeamento

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

y00 y01 y02

y10 y11 y12

y20 y21 y22

Page 51: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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

x20 x21 x22

OverviewOverview do Mapeamento do Mapeamento

ModeloProcessador

deVértices

RasterizadorProcessador

deFragmentos

y00 y01 y02

y10 y11 y12

y20 y21 y22

Page 52: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Limitações ComputacionaisLimitações Computacionais• Sem Sem heapheap

• Sem Sem stackstack

• Sem Sem scatterscatter ( (a[i] = ba[i] = b))

• Sem operações de redução (Sem operações de redução (max, min, summax, min, sum))

• Número limitado de Número limitado de outputsoutputs

Page 53: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Emulando Operações de ReduçãoEmulando Operações de Redução• Utilizam todos os elementos (Utilizam todos os elementos (max, min, summax, min, sum))

• Utilizam Utilizam log(n)log(n) passadas no pipeline passadas no pipeline

47 57 15

38 64 68

46 49 61

17

35

52

71 67 69 70

Page 54: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

47 57 15

38 64 68

46 49 61

17

35

52

71 67 69 70

64 68

71 70

Emulando Operações de ReduçãoEmulando Operações de Redução• Utilizam todos os elementos (Utilizam todos os elementos (max, min, summax, min, sum))

• Utilizam Utilizam log(n)log(n) passadas no pipeline passadas no pipeline

1º passo1º passo

Máximo da região 2x2Máximo da região 2x2

Page 55: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

47 57 15

38 64 68

46 49 61

17

35

52

71 67 69 70

64 68

71 70

Emulando Operações de ReduçãoEmulando Operações de Redução

1º passo1º passo

Máximo da região 2x2Máximo da região 2x2

float4 v1 = texRect(tex, coord);float4 v2 = texRect(tex, coord+float2(1,0));float4 v3 = texRect(tex, coord+float2(1,1));float4 v4 = texRect(tex, coord+float2(0,1));return max(v1, max(v2, max(v3, v4)));

Page 56: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

1º passo1º passo

Emulando Operações de ReduçãoEmulando Operações de Redução

47 57 15

38 64 68

46 49 61

17

35

52

71 67 69 70

64 68

71 70

71

2º passo2º passo

float4 v1 = texRect(tex, coord);float4 v2 = texRect(tex, coord+float2(1,0));float4 v3 = texRect(tex, coord+float2(1,1));float4 v4 = texRect(tex, coord+float2(0,1));return max(v1, max(v2, max(v3, v4)));

Page 57: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Estudo de Caso #2 (Massa-Mola)Estudo de Caso #2 (Massa-Mola)• Sistemas massa-molaSistemas massa-mola

– particulas conectadas por molasparticulas conectadas por molas– simulação de corpos rígidossimulação de corpos rígidos

• Posição de cada partícula é dada:Posição de cada partícula é dada:– velocidade e aceleração (soma das forças aplicadas)velocidade e aceleração (soma das forças aplicadas)– força externa = gravidade, colisão, atrito, inérciaforça externa = gravidade, colisão, atrito, inércia– força interna = força restauradora das molasforça interna = força restauradora das molas

Page 58: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Calculando Forças Restauradoras Calculando Forças Restauradoras [scatter][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

Page 59: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Calculando Forças Restauradoras Calculando Forças Restauradoras [scatter][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

Page 60: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Calculando Forças Restauradoras Calculando Forças Restauradoras [scatter][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

Page 61: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula

Calculando Forças Restauradoras Calculando Forças Restauradoras [gatter][gatter]

Page 62: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula

Calculando Forças Restauradoras Calculando Forças Restauradoras [gatter][gatter]

Page 63: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

para cada partícula para cada mola conectada calcule a força restauradora diminua a força nesta partícula

Simulando Sistema Massa-MolaSimulando Sistema Massa-Mola

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

1º passo1º passo

2º passo2º passo

Page 64: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Operações de BD Operações de BD [Govindaraju 2004][Govindaraju 2004]

• Avaliação de predicados (Avaliação de predicados (<, >, <=, >=, !=, =<, >, <=, >=, !=, =))– utiliza utiliza depth-testdepth-test para efetuar comparações para efetuar comparações

• Combinações booleanas (Combinações booleanas (AND, OR, NOTAND, OR, NOT))– utiliza utiliza stencil-teststencil-test para efetuar combinações para efetuar combinações

• Agregações (Agregações (count, max, min, sum, avgcount, max, min, sum, avg))– utiliza utiliza occlusion queryocclusion query para efetuar para efetuar countcount

• Speedups de 2~4x Speedups de 2~4x

Page 65: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Simulações Baseadas em FísicaSimulações Baseadas em Física• Fenômenos físicos pode ser aproximados com PDEsFenômenos físicos pode ser aproximados com PDEs

– PDEs = equações diferenciais parciaisPDEs = equações diferenciais parciais– integrar o estado de um objeto ao longo do tempointegrar o estado de um objeto ao longo do tempo

• Evaporação d'águaEvaporação d'água– estado é temperaturaestado é temperatura

Page 66: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Simulações Baseadas em FísicaSimulações Baseadas em Física• Fenômenos físicos pode ser aproximados com PDEsFenômenos físicos pode ser aproximados com PDEs

– PDEs = equações diferenciais parciaisPDEs = equações diferenciais parciais– integrar o estado de um objeto ao longo do tempointegrar o estado de um objeto ao longo do tempo

• Evaporação d'águaEvaporação d'água– estado é temperaturaestado é temperatura

• Dinâmica de fluídos Dinâmica de fluídos [Harris 2004][Harris 2004]– estado é velocidade e pressãoestado é velocidade e pressão

Page 67: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Simulações Baseadas em FísicaSimulações Baseadas em Física• Fenômenos físicos pode ser aproximados com PDEsFenômenos físicos pode ser aproximados com PDEs

– PDEs = equações diferenciais parciaisPDEs = equações diferenciais parciais– integrar o estado de um objeto ao longo do tempointegrar o estado de um objeto ao longo do tempo

• Evaporação d'águaEvaporação d'água– estado é temperaturaestado é temperatura

• Dinâmica de fluídos Dinâmica de fluídos [Harris 2004][Harris 2004]– estado é velocidade e pressãoestado é velocidade e pressão

• Dinâmica de nuvensDinâmica de nuvens– estado é velocidade, pressão e temperaturaestado é velocidade, pressão e temperatura

Page 68: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Tecnologias CorrentesTecnologias Correntes• GliftGlift

– Estruturas de dados genéricas para GPU estilo STLEstruturas de dados genéricas para GPU estilo STL– N-trees, estruturas adaptativas, matrizes esparsas, iteradoresN-trees, estruturas adaptativas, matrizes esparsas, iteradores

• Arquitetura unificadaArquitetura unificada– Um tipo de processador para diversas funçõesUm tipo de processador para diversas funções– Vertíces, geometria, fragmentosVertíces, geometria, fragmentos– CUDA e CTM, biblioteca para abstrair pipelineCUDA e CTM, biblioteca para abstrair pipeline

• Hardwares atuaisHardwares atuais– NVidia com GeForce 8800 UltraNVidia com GeForce 8800 Ultra– ATI com Radeon HD 2900 XTATI com Radeon HD 2900 XT– NVidia Tesla GPU Computing ServerNVidia Tesla GPU Computing Server

Page 69: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

Tecnologias CorrentesTecnologias Correntes• GliftGlift

– Estruturas de dados genéricas para GPU estilo STLEstruturas de dados genéricas para GPU estilo STL– N-trees, estruturas adaptativas, matrizes esparsas, iteradoresN-trees, estruturas adaptativas, matrizes esparsas, iteradores

• Arquitetura unificadaArquitetura unificada– Um tipo de processador para diversas funçõesUm tipo de processador para diversas funções– Vertíces, geometria, fragmentosVertíces, geometria, fragmentos– CUDA e CTM, biblioteca para abstrair pipelineCUDA e CTM, biblioteca para abstrair pipeline

• Hardwares atuaisHardwares atuais– NVidia com GeForce 8800 UltraNVidia com GeForce 8800 Ultra– ATI com Radeon HD 2900 XTATI com Radeon HD 2900 XT– NVidia Tesla GPU Computing ServerNVidia Tesla GPU Computing Server

Page 70: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

ConsideraçõesConsiderações• Paralelismo em desktops é uma tendênciaParalelismo em desktops é uma tendência

• Grandes fornecedores de CPU estão no mercado GPUGrandes fornecedores de CPU estão no mercado GPU– Intel pesquisando GPUsIntel pesquisando GPUs– AMD comprou ATI (Jul / 2006)AMD comprou ATI (Jul / 2006)

• Esforços para simplificar o desenvolvimentoEsforços para simplificar o desenvolvimento– CUDA, CTMCUDA, CTM

• Universidades precisam ensinar paralelismoUniversidades precisam ensinar paralelismo

Page 71: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

PerguntasPerguntas

Giovane Roslindo KuhnGiovane Roslindo [email protected]@gmail.com

Page 72: Introdução as Unidades de Processamento Gráfico (GPUs) · Pipeline Gráfico Fixo (Overview)Modelo Processador de Vértices Rasterizador Processador de Fragmentos Display Fonte:

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