Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEsther Almada Alterado mais de 10 anos atrás
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 ( Fundamentos de programação CUDA Toolkit e SDK CUDA Otimizações Estudos de caso Bibliografia ( 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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.