[ppt]programação de gpu - icmc - instituto de ciências...

22
Programação em GPU Paulo A. Pagliosa [email protected] Faculdade de Computação Universidade Federal de Mato Grosso do Sul IV Programa de Verão em Matemática Computacional, Estatística e Computação São Carlos, fevereiro de 2010

Upload: truongdien

Post on 03-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Programação em GPUPaulo A. Pagliosa

[email protected]

Faculdade de ComputaçãoUniversidade Federal de Mato Grosso do Sul

IV Programa de Verão em Matemática Computacional, Estatística e Computação

São Carlos, fevereiro de 2010

Page 2: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Apresentação

• Objetivo geral do minicursoIntrodução à programação de GPUs com arquitetura CUDA.

• Requisito: C++• Horário

2

Segunda(01/02)

Quarta(03/02)

Sexta(05/02)

Segunda(08/02)

Terça(09/02)

Quarta(10/02)

15h-16h •

16h-17h • • • • • •

17h-18h • • • • • •

18h-19h • •

Page 3: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Apresentação

• Ementa– Introdução a GPGPU (www.gpgpu.org)– Fundamentos de programação CUDA– Toolkit e SDK CUDA– Otimizações– Estudos de caso

• Bibliografia (www.nvidia.com/object/cuda_develop.html)– CUDA Programming Guide– CUDA Reference Manual– CUDA Best Practices Guide

3

Page 4: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• GPUs: unidades de processamento gráfico– Originalmente projetadas para processamento

gráfico 3D– Exemplos

4

NVIDIA GeForce 9500 GTNVIDIA Tesla C1060

Page 5: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

5

HardwareSoftware

Aplicação Processamento de geometria

Exibição

Processamento de fragmentos

Cena

Dados de geometria

Dados de pixels

Fontes de luz

Materiais

Rasterização

Framebuffer

Page 6: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Hardware

Exibição

Rasterização

Framebuffer

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

6

Processamento de geometria

Processamento de fragmentos

Transformação

Iluminação

Projeção

Montagem de primitivos

Recorte

Primitivos

Page 7: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Hardware

Exibição

Framebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

7

Page 8: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Mapeamento de textura

Aplicação de neblina

Composição

Tonalização

Hardware

Exibição

Framebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

8

Page 9: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• GPUs de primeira geração (1998)– Pipeline fixo– Renderização de triângulos pré-transformados– Exemplos: TNT2, Voodoo3

• GPUs de segunda geração (1999-2000)– Transformações geométricas– Iluminação– Velocidade de renderização maior– Exemplos: GeForce 2, ATI 5700

9

Page 10: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Hardware

Exibição

Framebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico programável (OpenGL 3.1)

10

Transformação

Iluminação

Projeção

Montagem de primitivos

Recorte

Primitivos

Page 11: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Mapeamento de textura

Aplicação de neblina

Composição

Tonalização

Hardware

Exibição

Framebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico programável (OpenGL 3.1)

11

Page 12: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• Shaders– Módulos que executam em GPU– Um shader pode ser de:• Vértice• Geometria (SM 4)• Fragmento

– Substituem a funcionalidade do pipeline fixo• Programa em GPU: um ou mais shaders

12

Programa GPU

Shader de vértice Shader de geometria Shader de fragmento

Page 13: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU• Shader de fragmento– Opera isoladamente sobre um fragmento– Entrada

• Variáveis pré-calculadas pela OpenGL• Variáveis definidas pela aplicação

– Saída: cor do fragmento– Operações

• Mapeamento de textura• Tonalização• Aplicação de neblina

– Fragmento pode ser descartado– Coordenadas do fragmento não podem ser mudadas

13

Page 14: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU• GPUs de terceira geração (2001-2002)– Pipeline programável com shaders de vértices– Número limitado de instruções sem ponto flutuante– Programação em linguagem de montagem– Exemplos: GeForce3 e 4, ATI 8500

• GPUs de quarta geração (2003-2006)– Shaders de vértices e fragmentos– Expansão do número de instruções– Ponto flutuante de 32 bits e dados em texturas– Surgimento de linguagens de shaders – Exemplos: GeForce FX, 6 e 7; ATI 9700 e 9800

14

Page 15: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

15

• NVIDIA GeForce 6800– Até 6 processadores de vértices– 16 processadores de fragmentos

Page 16: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• Linguagens de shaders– Cg (C for graphics), NVIDIA– HLSL (High Level Shader Language), Microsoft– GLSL (OpenGL Shader Language)

16

Page 17: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• Programas GLSL

17

Programa

glCreateProgram

glAttachShader

glLinkProgram

glUseProgram

Shader

glCreateShader

glShaderSource

glCompileShader

Código GLSL

Page 18: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• GPGPU: programação genérica em GPU• GPGPU com shaders– Modelo de programação: streams e kernels– Streams: dados de entrada e saída• Vetores em CPU — texturas em GPU

– Kernels: shaders (de fragmento)– Saída: renderização em textura– Execução: rasterização– Mapping Computational Concepts to GPUs– Dificuldades

18

Page 19: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

• Exemplos– Simulação dinâmica de corpos rígidos

– Multiplicação de matrizes potência de dois19

•Sem restrições •Com detecção de colisões

Page 20: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU• Desvantagens de GPGPU com shaders– GPU é programada através de uma API gráfica

• Curva de aprendizado da API• Overhead para aplicações não gráficas

– Flexibilidade• Memória da GPU pode ser lida (gather) mas não pode ser

escrita (scatter) de maneira geral• Shader de fragmento produz apenas saídas RGBA

• CUDA: Compute Unified Device Architecture• GPUs de quinta geração (2007-)– Computação de propósito geral– Exemplos: GeForce 8, 9, 100 e 200

20

Page 21: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU

21

• NVIDIA GeForce 8800 GTX– 16 multiprocessadores (SMs)– 8 processadores (SPs) por multiprocessador

Page 22: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição

Introdução a GPGPU• Aplicações CUDA– Visualização e simulação

– CUDA Zone22

•Traçado de raios •Simulação de fluídos