1 / 22

Programação em GPU

IV Programa de Verão em Matemática Computacional, Estatística e Computação. Programação em GPU. Paulo A. Pagliosa pagliosa@facom.ufms.br Faculdade de Computação Universidade Federal de Mato Grosso do Sul. São Carlos, fevereiro de 2010. Apresentação. Objetivo geral do minicurso

pilar
Download Presentation

Programação em GPU

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IV Programa de Verão em Matemática Computacional, Estatística e Computação Programação em GPU Paulo A. Pagliosa pagliosa@facom.ufms.br 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

  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

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

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

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

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

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

  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 (1999-2000) • 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 Processamento de geometria Transformação Iluminação Rasterização Projeção Processamento de fragmentos Montagem de primitivos Framebuffer Recorte Exibição Primitivos

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

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

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

  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)

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

  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

  19. Introdução a GPGPU • Exemplos • Simulação dinâmica de corpos rígidos • Multiplicação de matrizes potência de dois

  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

  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

More Related