A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Apresentações semelhantes


Apresentação em tema: "Faculdade de Computação Universidade Federal de Mato Grosso do Sul"— Transcrição da apresentação:

1 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 Programação em GPU Paulo A. Pagliosa Faculdade de Computação Universidade Federal de Mato Grosso do Sul São Carlos, fevereiro de 2010

2 Apresentação Objetivo geral do minicurso
Introdução à programação de GPUs com arquitetura CUDA. Requisito: C++ Horário 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

3 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 -Introdução a GPGPU: programação em GPU para propósito geral Programação em CUDA: fabricante específico Estudos de caso: exemplos simples

4 Introdução a GPGPU GPUs: unidades de processamento gráfico
Originalmente projetadas para processamento gráfico 3D Exemplos NVIDIA Tesla C1060 NVIDIA GeForce 9500 GT

5 Introdução a GPGPU Pipeline gráfico fixo (OpenGL) Software Hardware
Aplicação Processamento de geometria Rasterização Cena Dados de geometria Dados de pixels Fontes de luz Materiais Processamento de fragmentos Framebuffer Exibição

6 Introdução a GPGPU Pipeline gráfico fixo (OpenGL) Hardware Exibição
Rasterização Framebuffer Transformação Iluminação Projeção Montagem de primitivos Recorte Primitivos Processamento de geometria Processamento de fragmentos

7 Introdução a GPGPU Pipeline gráfico fixo (OpenGL) Hardware
Exibição Framebuffer Processamento de geometria Rasterização Processamento de fragmentos

8 Introdução a GPGPU Pipeline gráfico fixo (OpenGL) Hardware
Exibição Framebuffer Processamento de geometria Rasterização Mapeamento de textura Aplicação de neblina Composição Tonalização Processamento de fragmentos

9 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 ( ) Transformações geométricas Iluminação Velocidade de renderização maior Exemplos: GeForce 2, ATI 5700

10 Introdução a GPGPU Pipeline gráfico programável (OpenGL 3.1) Hardware
Exibição Framebuffer Transformação Iluminação Projeção Montagem de primitivos Recorte Primitivos Processamento de geometria Rasterização Processamento de fragmentos

11 Introdução a GPGPU Pipeline gráfico programável (OpenGL 3.1) Hardware
Exibição Framebuffer Processamento de geometria Rasterização Mapeamento de textura Aplicação de neblina Composição Tonalização Processamento de fragmentos

12 Introdução a GPGPU Shaders Programa em GPU: um ou mais 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 SHADER DE VÉRTICE: opera sobre um vértice Entrada: atributos de um vértice (1)dados em variáveis embutidas com os valores correspondentes do estado da OpenGL (coordenadas espaciais e de textura, cor, etc.) e (2)definidos pela aplicação. Saída: atributos (1)dados por variáveis embutidas (pelo menos a posição do vértice) e (2)definidos pela aplicação, os quais são passados para o estágio seguinte. Operações: transformação de coordenadas espaciais e de textura, iluminação, geração de coordenadas de textura, etc. SHADER de GEOMETRIA: opera sobre um primitivo, com ou sem informação de adjacência -Entrada: primitivo de um tipo. -Saída: zero ou mais primitivos do mesmo tipo. -Operações: LOD, tesselação. SHADER DE FRAGMENTO: opera sobre fragmento Entrada: atributos de um fragmento (1)dados em variáveis embutidas com os valores correspondentes do estado da OpenGL (coordenadas de textura, etc.) e (2)definidos pela aplicação. Saída: cor do fragmento (coordenadas do fragmento não podem ser modificadas) ou fragmento descartado. Operações: mapeamento de textura, tonalização, aplicação de neblina. Programa GPU Shader de vértice Shader de geometria Shader de fragmento

13 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 SHADER DE FRAGMENTO: opera sobre fragmento Entrada: atributos de um fragmento (1)dados em variáveis embutidas com os valores correspondentes do estado da OpenGL (coordenadas de textura, etc.) e (2)definidos pela aplicação. Saída: cor do fragmento (coordenadas do fragmento não podem ser modificadas) ou fragmento descartado. Operações: mapeamento de textura, tonalização, aplicação de neblina.

14 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 ( ) 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

15 Introdução a GPGPU NVIDIA GeForce 6800 Até 6 processadores de vértices
16 processadores de fragmentos

16 Introdução a GPGPU Linguagens de shaders Cg (C for graphics), NVIDIA
HLSL (High Level Shader Language), Microsoft GLSL (OpenGL Shader Language) GLSL: plataforma aberta; executa em qualquer hardware compatível com suporte a OpenGL

17 Introdução a GPGPU Programas GLSL Shader glCreateShader Programa
glCreateProgram glAttachShader glLinkProgram glUseProgram Shader glCreateShader glShaderSource glCompileShader Código GLSL

18 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 Problema pode ser inadequado ao modelo de programação. Dependendo do problema, o mapeamento pode ser difícil; vários passos de renderização podem ser necessários.

19 Introdução a GPGPU Exemplos Simulação dinâmica de corpos rígidos
Multiplicação de matrizes potência de dois Sem restrições Com detecção de colisões

20 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 GPGPU com shader: Programação via API gráfica: aprendizado e overhead para aplicações não gráficas. Scatter: remove flexibilidade de programação. Mesmo com CUDA, programação não consiste simplesmente em “recompilar” código tradicional. Dependendo do problema, mapeamento ainda pode ser complicado. Programas realmente EFICIENTES quase sempre são mais difíceis de ser implementados. Primeiro passo: pensar “em paralelo”. Fermi: sexta geração?

21 Introdução a GPGPU NVIDIA GeForce 8800 GTX 16 multiprocessadores (SMs)
8 processadores (SPs) por multiprocessador

22 Introdução a GPGPU Aplicações CUDA Visualização e simulação CUDA Zone
Traçado de raios Simulação de fluídos


Carregar ppt "Faculdade de Computação Universidade Federal de Mato Grosso do Sul"

Apresentações semelhantes


Anúncios Google