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

Slides:



Advertisements
Apresentações semelhantes
DESENHO INDUSTRIAL ASSISTIDO POR COMPUTADOR
Advertisements

REUNIÃO NACIONAL DE MULHERES DIRETORAS DA FORÇA SINCAL.
Operações envolvendo imagens
Robótica Industrial (ENE109) Apresentação do Curso
Sílabo: Introdução à Ciência da Computação (SCC0121)
Software Básico Silvio Fernandes
Pontifícia Universidade Católica do Rio Grande do Sul
JOGOS.
António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico.
Prof. Alex Fernandes da Veiga Machado
Projeções e OpenGL Alex F. V. Machado.
William Stallings Arquitetura e Organização de Computadores 8a Edição
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
UNIVERSIDADE FEDERAL DE SANTA MARIA Disciplina:
Arquiteturas Diferentes
Bruno José Dembogurski Instituto de Computação - UFF
COMPUTAÇÃO GRÁFICA.
GPGPU.
Informática Industrial
INF 1366 – Computação Gráfica Interativa
April 05 Prof. Ismael H. F. Santos - 1 Módulo II XML Processing: XSLT, SAX e DOM Prof. Ismael H F Santos.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Computing Unified Device Architecture (CUDA)
UNIDADE DE CONTROLE MICROPROGRAMADA PARA O FEMTOJAVA
Componentes do Computador e noções de Arquitetura de Computadores
Arquitetura de Computadores
Computação Gráfica OpenGL.
09/03/10 20:13 Claudio de Oliveira – 1/21.
Computação Gráfica Pipeline Gráfico.
“Simulação de dispositivos dinâmicos para jogos”
Sistemas Operacionais
PROGRAMAÇÃO I UNIDADE 1.
GAPH Integração de Hardware do Usuário ao CoreConnect Leandro Heleno Möller e Leonel Pablo Tedesco Prototipação Rápida e Computação.
CUDA vs OpenCL Introdução.
Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU.
Fundamentos de programação CUDA
Salas de Matemática.
Arquitetura de computadores
Complex Instruction Set Computer
Tópicos sobre GPGPU em CUDA
Game Engines.
O Plano "Não basta destruir o que sobra;
Arquitetura de computadores
1.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
Prof. Leandro da Silva Taddeo
1/27 IV Encontro Sul Fluminense de Educação Matemática - ESFEM 16 e 17 de dezembro de 2005 Antonio.
Sistemas de Informação 8º Semestre 2S
Organização e Arquitetura de Computadores
SairPróximo Itens de Seleção Probabilidades e Combinatória Cálculo de Probabilidades. Regra de Laplace. ITENS DE SELEÇÃO DOS EXAMES NACIONAIS E TESTES.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
1 Simulação de Iluminação Volumétrica Apresentação Final Computação Gráfica /1 Saulo Andrade Pessoa.
Álgebra Vetorial e Linear para Computação
Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
01. Conceitos Básicos e definições
Rio Verde - Goiás - Brasil
Lilian l. bonfim costa e tatiane b. da silva
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Organização e Arquitetura de Computadores
Go3D! A 3D Graphics Engine Carlos Tosin. Divisão Estrutura dividida em 4 componentes Core (46 classes) Áudio (4 classes) Script (4 classes) Renderer (37.
Renderização em Tempo Real
Mapeamento de Textura: Aspectos Gerais
Computação Gráfica – Introdução ao OpenGL
Davi Barbosa Leonardo Batista Marcelo Almeida Wagner Barros [dbb, lbs3, maa, Prof.ª Judith Kelner Alunos:
Perspectivas NVidia para Desktop Tiago Carneiro Pessoa
Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Universidade Estadual de Santa.
GPU Programming Frederico José Camiloti Dalllalana Orientador: Prof. Dr. Luis Gustavo Nonato.
Introdução a GPU e CUDA.
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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.

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

Introdução a GPGPU 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) GLSL: plataforma aberta; executa em qualquer hardware compatível com suporte a OpenGL

Introdução a GPGPU Programas GLSL Shader glCreateShader Programa glCreateProgram glAttachShader glLinkProgram glUseProgram Shader glCreateShader glShaderSource glCompileShader Có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 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.

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 http://http.developer.nvidia.com/GPUGems3/gpugems3_ch29.html

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?

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