[ppt]programação de gpu - icmc - instituto de ciências...
TRANSCRIPT
![Page 1: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/1.jpg)
Programação em GPUPaulo A. Pagliosa
Faculdade de ComputaçãoUniversidade 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
![Page 2: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/2.jpg)
Apresentação
• Objetivo geral do minicursoIntroduçã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 • •
![Page 3: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/3.jpg)
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
3
![Page 4: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/4.jpg)
Introdução a GPGPU
• GPUs: unidades de processamento gráfico– Originalmente projetadas para processamento
gráfico 3D– Exemplos
4
NVIDIA GeForce 9500 GTNVIDIA Tesla C1060
![Page 5: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/5.jpg)
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
![Page 6: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/6.jpg)
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
![Page 7: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/7.jpg)
Hardware
Exibição
Framebuffer
Rasterização
Processamento de geometria
Processamento de fragmentos
Introdução a GPGPU
• Pipeline gráfico fixo (OpenGL)
7
![Page 8: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/8.jpg)
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
![Page 9: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/9.jpg)
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
9
![Page 10: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/10.jpg)
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
![Page 11: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/11.jpg)
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
![Page 12: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/12.jpg)
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
![Page 13: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/13.jpg)
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
![Page 14: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/14.jpg)
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
14
![Page 15: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/15.jpg)
Introdução a GPGPU
15
• NVIDIA GeForce 6800– Até 6 processadores de vértices– 16 processadores de fragmentos
![Page 16: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/16.jpg)
Introdução a GPGPU
• Linguagens de shaders– Cg (C for graphics), NVIDIA– HLSL (High Level Shader Language), Microsoft– GLSL (OpenGL Shader Language)
16
![Page 17: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/17.jpg)
Introdução a GPGPU
• Programas GLSL
17
Programa
glCreateProgram
glAttachShader
glLinkProgram
glUseProgram
Shader
glCreateShader
glShaderSource
glCompileShader
Código GLSL
![Page 18: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/18.jpg)
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
18
![Page 19: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/19.jpg)
Introdução a GPGPU
• Exemplos– Simulação dinâmica de corpos rígidos
– Multiplicação de matrizes potência de dois19
•Sem restrições •Com detecção de colisões
![Page 20: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/20.jpg)
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
20
![Page 21: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/21.jpg)
Introdução a GPGPU
21
• NVIDIA GeForce 8800 GTX– 16 multiprocessadores (SMs)– 8 processadores (SPs) por multiprocessador
![Page 22: [PPT]Programação de GPU - ICMC - Instituto de Ciências ...icmc.usp.br/~castelo/CUDA/slides1.ppt · Web viewSaída: atributos (1)dados por variáveis embutidas (pelo menos a posição](https://reader034.vdocuments.site/reader034/viewer/2022052610/5c04f57409d3f291388cdac4/html5/thumbnails/22.jpg)
Introdução a GPGPU• Aplicações CUDA– Visualização e simulação
– CUDA Zone22
•Traçado de raios •Simulação de fluídos