1 / 110

GPGPU: OpenCL, CUDA e Shaders

GPGPU: OpenCL, CUDA e Shaders. Introdução à Multimídia – CIn - UFPE. Equipe. Aline Éllida D’Oleron Vasconcelos Ângelo Lima Mazer Luiz Gustavo da Rocha Charamba Márcio Ricardo Alves Gadelha de Araújo Sílvio Gustavo de Oliveira Santos Graduação em Engenharia da Computação. Roteiro.

lora
Download Presentation

GPGPU: OpenCL, CUDA e Shaders

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. GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

  2. Equipe • Aline Éllida D’Oleron Vasconcelos • Ângelo Lima Mazer • Luiz Gustavo da Rocha Charamba • Márcio Ricardo Alves Gadelha de Araújo • Sílvio Gustavo de Oliveira Santos • Graduação em Engenharia da Computação

  3. Roteiro • Aline: • O que é GPGPU(Introdução) • GPU(Visão geral) • História e Evolução • Macro arquitetura • Frameworks(CUDA, OpenCL, Shaders) • Sílvio: • Shaders • Charamba: • Cuda • Márcio: • OpenCL • Ângelo: • Relacionar aplicações com RV e RA • Aplicações • Tendências Futuras • Conclusão

  4. GPGPU • O que é GPGPU ? • Uma Visão geral sobre GPU • História e Evolução • Evolução do processamento das GPUs • Funcionamento das GPUs • Linguagens

  5. O que é GPGPU? General Purpose Graphics Processing Unit (Unidade de Processamento Gráfico para Propósito Geral) Alta velocidade GPGPU é uma técnica de usar uma GPU, que normalmente lida apenas com computação gráfica, para realizar computação em aplicações tradicionalmente tratadas pela CPU.

  6. Uma visão geral sobre GPU Reduzir a carga geral da CPU Maior velocidade Imagens com maior qualidade. Efetuar complexos cálculos matemáticos e geométricos Capacidade de processar vetores e matrizes com facilidade.

  7. História e Evolução • Antes da criação das GPUs, as aplicações gráficas (em especial os jogos) eram baseados apenas em polígonos ou seja, na geometria da cena.

  8. EverQuest História e Evolução Placas Aceleradoras • 1995: Primeira placa gráfica comercial: • 3dxf voodoo • Mapeamento de texturas geométricas • 1999: Placas aceleradoras 3D GeForce 256 (NVidia) • Criação do conceito de pipeline gráfico • Transformação dos vértices dos polígonos e pela iluminação dos mesmos.

  9. EverQuest Warcraft EverQuest 1999  Warcraft 1994

  10. História e Evolução • 2001: placas gráficas programáveis • GeForce 3, GeForce 4 e Radeon 8500. • A programação só era possível no processador de vértices. • Tinha diversas limitações quanto a sua funcionalidade. • Criado o conceito de texturas 3D.

  11. Max Payne Max Payne 2001

  12. História e Evolução • 2002: o processador de fragmentos também se tornou programável. • GeForce FX, Radeon 9600-9800 e Radeon X600-800 • Faziam computação muito mais eficiente e flexível do que a geração anterior.

  13. Warcraft III 2001

  14. História e Evolução • Atualmente: DirectX 10. • A NvidiaGeForce 8 e a ATI Radeon HD2900 implementaram uma nova arquitetura: • o estágio de vértices, o novo estágio de geometria e o estágio de fragmentos.

  15. DirectX10 DirectX9

  16. Evolução do processamento das GPUs Ilustrando o poder desta evolução temos que o número de operações de ponto flutuante destes processadores, quando comparados com os processadores de propósito geral do mercado, cresce mais rápido ao longo dos anos.

  17. Evolução do processamento da s GPUs

  18. Funcionamento das GPUs Pipeline gráfico

  19. Funcionamento das GPUs • Modelo de Processamento (StreamProcessing) • pode processar uma maior variedade de dados e com maior paralelismo.

  20. Linguagens CUDA : Arquitetura de computação paralela da NVIDIA que possibilita aumentos significativos na performance de computação pelo aproveitamento da potência da GPU.

  21. Linguagens OpenCL: (Linguagem de Computação Aberta) é um novo ambiente computacional multiplataforma. Ela permite que os desenvolvedores aproveitem o grande poder da computação paralela das GPUs para criar poderosas aplicações de computação.

  22. Shaders • O que são shaders? • Pipeline fixo • Pipeline programável • Linguagens • Exemplos

  23. O que são shaders? São programas que rodam na GPU e que determinam como um objeto será renderizado.

  24. O que são shaders? • Antes dos shaders, a GPU oferecia somente um conjunto de efeitos pré-programado de efeitos. • Efeitos de luz, perspectiva, textura... • Gráficos pouco realistas • A partir da criação dos shaders, foi possível criar efeitos que aumentam o realismo das cenas 3D • Suportado a partir do DirectX 8 e OpenGL 1.4

  25. Pipeline Fixo • Somentealgunscomandosfixosdisponíveis via API • Transformações e Iluminação via API • Texturização via API • Bastante restrito

  26. Pipeline Fixo

  27. Pipeline Programável Código customizável escrito pelo programador e executado pela GPU. Necessário definir as transformações de cor e textura. Permite materias mais realistas (metais, pedra, madeira)

  28. Pipeline Programável

  29. Pipeline Programável As GPUs atuais permitem programar 3 tipos de shaders: Vertex shaders Geometry shaders Pixel shaders

  30. Vertex Shader Programa que opera sobre os vértices e sobre os dados associados (cor, iluminação, textura). O programa é executado uma vez para cada vértice, sem informações sobre os demais vértices.

  31. Vertex Shader • O processador de vértices executa o shader, que pode realizar as seguintes operações sobre os vértices: • Transformações de posição • Transformações de textura • Transformações de iluminação • Para cada vértice de entrada, gera um único vértice de saída.

  32. Vertex Shader

  33. Geometry Shader Programa que opera sobre as primitivas (pontos, linhas e triângulos). Permite que novos vértices sejam adicionados ou removidos, alterando o número de primitivas.

  34. Geometry Shader Deste modo, é responsável pelo nível de detalhe do objeto. A partir de cada primitiva de entrada, gera uma ou mais primitivas de saída.

  35. Geometry Shader

  36. Pixel Shader Programa executado sobre todos os pixels que compõem uma primitiva. É executado uma vez para cada pixel que compõe a primitiva.

  37. Pixel Shader • Alguns operações possíveis que o processador de pixels pode executar: • Determinar cores dos pixels • Coordenadas de textura • Iluminação e sombras • Não pode alterar posições dos pixels.

  38. Pixel Shader

  39. Linguagens • RenderMan Shading Language • Criada no final da década de 80 • Uma das primeiras linguagens para criação de shaders • Permitiu que parte do pipeline gráfico fosse substituído por pequenos programas (shaders) • Não é destinado a renderização em tempo real

  40. Linguagens • HLSL – High Level Shading Language • Linguagem proprietária da Microsoft • Usada pra desenvolver com Direct3D • GLSL – OpenGL Shading Language • Usada para criar shaders em OpenGL • Multi-plataforma • Cg – C for Graphics • Dsenvolvida pela Nvidia em conjunto com a MS • Similar a HLSL

  41. Shaders - Exemplos Jogos sem shaders Jogos com shaders

  42. Shaders - Exemplos

  43. Shaders - Exemplos Comparação de shaders http://www.youtube.com/watch?v=kRdl4C_6Ydw Vertex e Pixel shaders http://www.youtube.com/watch?v=lA4Z5Eutzp0 Vertex shaders http://www.youtube.com/watch?v=KkccB1OvQjs

  44. CUDA • O que é CUDA? • Arquitetura CUDA • API CUDA • Usando CUDA • Aplicações com CUDA

  45. O que é CUDA? • CUDA (Compute Unified Device Architecture ) • CUDA é um modelo de programação paralela e um ambiente de software projetado para desenvolver aplicações que utilizam de forma eficiente o número de cores disponíveis no sistema.Tudo isso de forma escalável e transparente. • Tecnologia NVIDIA.

  46. Arquitetura CUDA • CUDA é composta de três abstrações principais.

  47. Arquitetura CUDA • CUDA é composta de três abstrações principais. • Uma hierarquia de grupo de threads;

  48. Arquitetura CUDA • CUDA é composta de três abstrações principais. • Uma hierarquia de grupo de threads; • Memórias compartilhadas;

  49. Arquitetura CUDA • CUDA é composta de três abstrações principais. • Uma hierarquia de grupo de threads; • Memórias compartilhadas; • Sincronização via barreiras.

  50. Arquitetura CUDA • CUDA é composta de três abstrações principais. • Uma hierarquia de grupo de threads; • Memórias compartilhadas; • Sincronização via barreiras. Estas abstrações possibilitam o paralelismo de dados e threads. O programador particiona o problema em subproblemas que podem ser solucionados independentemente em paralelo. Cada subproblema pode ser agendado para ser executado em qualquer um dos núcleos disponíveis, apenas o sistema de runtime precisa saber quantos núcleos estão disponíveis.

More Related