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

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

Programação em GPU Paulo A. Pagliosa Faculdade de Computação Universidade Federal de Mato Grosso do Sul IV Programa de Verão em.

Apresentações semelhantes


Apresentação em tema: "Programação em GPU Paulo A. Pagliosa Faculdade de Computação Universidade Federal de Mato Grosso do Sul IV Programa de Verão em."— Transcrição da apresentação:

1 Programação em GPU Paulo A. Pagliosa 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

2 Apresentação Objetivo geral do minicurso Introduçã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

3 Apresentação Ementa – Introdução a GPGPU (www.gpgpu.org)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)www.nvidia.com/object/cuda_develop.html – CUDA Programming Guide – CUDA Reference Manual – CUDA Best Practices Guide 3

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

5 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

6 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

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

8 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

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

10 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

11 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

12 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

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 13

14 Introdução a GPGPU GPUs de terceira geração ( ) – 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

15 Introdução a GPGPU 15 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) 16

17 Introdução a GPGPU Programas GLSL 17 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 Mapping Computational Concepts to GPUs – Dificuldades 18

19 Introdução a GPGPU Exemplos – Simulação dinâmica de corpos rígidos – Multiplicação de matrizes potência de dois Multiplicação de matrizes potência de dois 19 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

21 Introdução a GPGPU 21 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 CUDA Zone 22 Traçado de raios Simulação de fluídos


Carregar ppt "Programação em GPU Paulo A. Pagliosa Faculdade de Computação Universidade Federal de Mato Grosso do Sul IV Programa de Verão em."

Apresentações semelhantes


Anúncios Google