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

Programação em GPU

  • Upload
    pilar

  • View
    58

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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 • •

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

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

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

5

HardwareSoftware

Aplicação Processamento de geometria

Exibição

Processamento de fragmentos

Cena

Dados de geometriaDados de geometria

Dados de pixelsDados de pixels

Fontes de luzFontes de luz

MateriaisMateriais

Rasterização

FramebufferFramebuffer

Hardware

Exibição

Rasterização

FramebufferFramebuffer

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

PrimitivosPrimitivos

Hardware

Exibição

FramebufferFramebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

7

Mapeamento de textura

Aplicação de neblina

Composição

Tonalização

Hardware

Exibição

FramebufferFramebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

• Pipeline gráfico fixo (OpenGL)

8

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

Hardware

Exibição

FramebufferFramebuffer

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

PrimitivosPrimitivos

Mapeamento de textura

Aplicação de neblina

Composição

Tonalização

Hardware

Exibição

FramebufferFramebuffer

Rasterização

Processamento de geometria

Processamento de fragmentos

Introdução a GPGPU

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

11

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érticeShader de vértice Shader de geometriaShader de geometria Shader de fragmentoShader de fragmento

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

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

Introdução a GPGPU

15

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

Introdução a GPGPU

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

16

Introdução a GPGPU

• Programas GLSL

17

Programa

glCreateProgram

glAttachShader

glLinkProgram

glUseProgram

Shader

glCreateShader

glShaderSource

glCompileShader

Código GLSLCódigo GLSL

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

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

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

Introdução a GPGPU

21

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

Introdução a GPGPU

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

– CUDA Zone22

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