logo “ add your company slogan ” gpgpu: opencl, cuda e shaders introdução à multimídia –...

110
LOGO “ Add your company slogan GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Upload: terezinha-damasio-batista

Post on 07-Apr-2016

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

LOGO

“ Add your company slogan ”

GPGPU: OpenCL, CUDA e Shaders

Introdução à Multimídia – CIn - UFPE

Page 2: LOGO “ Add your company slogan ” 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

Page 3: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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

Page 4: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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

Page 5: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 6: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 7: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 8: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

EverQuest 

                                                                                                                                                                                         

Page 9: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

EverQuest 

                                                                                                                                                                                         

EverQuest 1999 

Warcraft 

                                                                                                                                                                                         

Warcraft

1994

Page 10: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 11: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Max Payne 

                                                                                                                                                                                         

Max Payne 

2001

Page 12: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 13: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Warcraft III 2001

Page 14: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

História e Evolução

Atualmente: DirectX 10. A Nvidia GeForce 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.

Page 15: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

DirectX9

DirectX10

Page 16: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 17: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Evolução do processamento da s GPUs

Page 18: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Funcionamento das GPUs

Pipeline gráfico

Page 19: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Funcionamento das GPUs

Modelo de Processamento (Stream Processing) pode processar uma maior variedade de

dados e com maior paralelismo.

Page 20: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 21: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 22: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Shaders

• O que são shaders?

• Pipeline fixo

• Pipeline programável

• Linguagens

• Exemplos

Page 23: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

O que são shaders?

São programas que rodam na GPU e que determinam como um objeto será renderizado.

Page 24: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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

Page 25: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pipeline Fixo

Somente alguns comandos fixos disponíveis via API Transformações e Iluminação via API Texturização via API

Bastante restrito

Page 26: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pipeline Fixo

Page 27: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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)

Page 28: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pipeline Programável

Page 29: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pipeline Programável

As GPUs atuais permitem programar 3 tipos de shaders:

Vertex shaders Geometry shaders Pixel shaders

Page 30: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 31: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 32: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Vertex Shader

Page 33: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 34: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 35: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Geometry Shader

Page 36: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pixel Shader

Programa executado sobre todos os pixels que compõem uma primitiva.

É executado uma vez para cada pixel que compõe a primitiva.

Page 37: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 38: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Pixel Shader

Page 39: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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

Page 40: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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

Page 41: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Shaders - Exemplos

Jogos sem shaders

Jogos com shaders

Page 42: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Shaders - Exemplos

Page 43: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Shaders - Exemplos

Comparação de shadershttp://www.youtube.com/watch?v=kRdl4C_6Ydw

Vertex e Pixel shadershttp://www.youtube.com/watch?v=lA4Z5Eutzp0

Vertex shadershttp://www.youtube.com/watch?v=KkccB1OvQjs

Page 44: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

CUDA

• O que é CUDA?

• Arquitetura CUDA

• API CUDA

• Usando CUDA

• Aplicações com CUDA

Page 45: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 46: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

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

Page 47: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

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

Page 48: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

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

Page 49: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

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

Page 50: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

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.

Page 51: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

Hierarquia de memória Comparativo entre CPU e GPU. Um mesmo trecho de código é executadoem paralelo para diferentes blocos de dados e com uma cache para cada núcleo da GPU.

Page 52: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura CUDA

Hierarquia de memória Comparativo entre CPU e GPU. Um mesmo trecho de código é executadoem paralelo para diferentes blocos de dados e com uma cache para cada núcleo da GPU.

Estas pequenas cachespossuem acesso rápido para leitura e escrita, permitindo o compartilhamento detarefas entre as threads.Reduzindo o acesso a memórias externas, diminuindo a latência.

Page 53: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

API CUDA

A pilha de software do CUDA, envolve uma API com suporte direto adiversas funcões matemáticas, primitivas de computação gráfica, bibliotecas, suporte aoruntime e ao driver, que otimiza e gerencia a utilização de recursos diretamente com aGPU.

API

Page 54: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

API CUDA

Bibliotecas de Runtime. Tem a função de gerenciar operações da

CPU em comunicação com GPU. Gerencia núcleos disponíveis na GPU.

Page 55: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Funções para CPU:

- Gerenciamento:- GPU- Memória- Controle de tempo de

execução- Interoperabilidade entre

OpenGL e Direct3D

Bibliotecas de Runtime. Tem a função de gerenciar operações da

CPU em comunicação com GPU. Gerencia núcleos disponíveis na GPU.

API CUDA

Page 56: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Funções para CPU:

- Gerenciamento:- GPU- Memória- Controle de tempo de

execução- Interoperabilidade entre

OpenGL e Direct3D

Bibliotecas de Runtime. Tem a função de gerenciar operações da

CPU em comunicação com GPU. Gerencia núcleos disponíveis na GPU.

API CUDA

Funções para GPU:

- Matemáticas Otimizadas

- Sincronização das Threads

- Texturas- Funções para

garantir atomicidade

Page 57: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Usando CUDA

Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série

8 ou superior

Page 58: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Usando CUDA

Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série

8 ou superior

NVIDIA Quadro

Page 59: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Usando CUDA

Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série

8 ou superior

NVIDIA Quadro

NVIDIA Tesla

Page 60: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Usando CUDA

Requisitos para a utilização Placas Gráficas:

Linguagens:• C • C ++ (futuramente)• FORTRAN (futuramente)• Java, FORTRAN e Python (feito por terceiros)

NVIDIA GeForce série 8 ou superior

NVIDIA Quadro

NVIDIA Tesla

Page 61: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Aplicações com CUDA

Várias aplicações com CUDA NVIDIA CUDA Day Demos - Feb. 2010, San

Francisco• http://www.youtube.com/watch?v=ZOGLkl9cFPw&f

eature=fvw

Simulação de Partículas em tempo real NVIDIA CUDA realtime particles demo

• http://www.youtube.com/watch?v=RqduA7myZok

Page 62: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL

• O que é OpenCL?• Working Group

• OpenCL 1.1

• Processor Parallelism• It’s a heterogeneous World

• Arquitetura OpenCL

• OpenCL At Work

• Timeline

• Models

• Programming Kernels• Summary

• Exemplos

Page 63: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

O que é OpenCL?

OpenCL (Open Computing Language) é uma linguagem de programação para computadores para uso geral de programação paralela de sistemas heterogêneos.

A linguagem é aberta, livre de royalties e visa ser multi-plataforma.

Ela consiste numa API para coordenar a computação paralela.

Page 64: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

O que é OpenCL?

OpenCL proporciona um ambiente de programação uniforme para os desenvolvedores de software para escrever código eficiente e portátil para computação de alto desempenho, servidores, sistemas de computadores desktop e dispositivos móveis através de um diversificado mix de multi-core CPUs, GPUs, Cells e DSPs.

Page 65: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Working Group

Diversa participação da indústria Ex: Fornecedores de processadores,

fabricantes de sistema, desenvolvedores de aplicativos

Muitos especialistas líderes da indústria envolvidos no projeto OpenCL

Apple fez a proposta inicial e é muito ativa no grupo de trabalho

Page 66: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Working Group

Page 67: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Timeline

Inicialmente desenvolvida pela Apple Apple submeteu proposta inicial ao

Khronos Group Aprovada como release pública

Page 68: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL 1.1

Período de 18 meses entre OpenCL 1.0 e OpenCL 1.1 Totalmente compatível com OpenCL 1.0 Novos tipos de dados Incluindo 3 componentes de vetores e

formatos de imagem adicionais Comandos de manipulação de vários

hospedeiros Buffers de processamento em vários

dispositivos

Page 69: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL 1.1

Operações em regiões de um buffer Incluindo ler, escrever e cópia do 1D, 2D ou 3D

regiões retangulares Uma maior utilização de eventos Para dirigir e controlar a execução de comandos Adicional OpenCL C built-in funções Melhoria da interoperabilidade OpenGL Partilha eficiente de imagens e buffers ligando

eventos OpenCL e OpenGL

Page 70: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Processor Parallelism

Page 71: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

It’s a Heterogeneous World

A modern platform Includes: One or more CPUs One or more GPUs DSP processors other?

OpenCL lets Programmers write a single portable program that uses ALL resources in the heterogeneous platform.

Page 72: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Arquitetura OpenCL

Page 73: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL API

Functions that allow an application to manage parallel computing tasks

It enumerates the OpenCL-capable hardware in a system

sets up the sharing of data structures between the application and OpenCL

controls the compilation and submission of kernels to the GPU

and has a rich set of functions that manage queuing and synchronization

Page 74: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Runtime

Executes tasks submitted by the application via the OpenCL API

The runtime efficiently transfers data between main memory and the dedicated VRAM used by the GPU, and directs execution of the kernels on the GPU hardware

During execution, manages the in-order or out-of-order dependencies between the kernels, and utilizes the GPU’s processing elements in the most efficient manner

Page 75: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL at Work

At startup, the application calls the OpenCL API to determine which GPUs are available in the system. It then selects the appropriate GPUs and creates command queues. The application loads and compiles the OpenCL C kernels it will use.

Page 76: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL at Work

When the application is ready to execute a kernel, it calls the OpenCL API to specify the data and the number of parallel kernel instances required.

The OpenCL runtime moves the data required by the kernel up to the GPU’s VRAM. The GPU then executes the kernel simultaneously on its processing elements.

Page 77: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Platform Model

One Host + one or more Compute Devices Each Compute Device is composed of one or more

Compute Units• Each Compute Unit is further divided into one or more

Processing Elements

Page 78: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Execution Model An OpenCL application runs on a host which

submits work to the compute devices Work item: the basic unit of work on an OpenCL device Kernel: the code for a work item. Basically a C function Program: Collection of kernels and other functions

(Analogous to a dynamic library) Context: The environment within which workitems executes

… includes devices and their memories and command queues

Applications queue kernel execution instances Queued in-order … one queue to a device Executed in-order or out-of-order

Page 79: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Memory Model

Private Memory Per work-item

Local Memory Shared within a workgroup

Global/Constant Memory Visible to all workgroups

Host Memory On the CPU

Page 80: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Programming kernels: OpenCL C Language

A subset of ISO C99 But without some C99 features such as standard C99 headers,

function pointers, recursion, variable length arrays, and bit fields

A superset of ISO C99 with additions for: Work-items and workgroups Vector types Synchronization Address space qualifiers

Also includes a large set of built-in functions Image manipulation Work-item manipulation, Specialized math routines, etc.

Page 81: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Programming Kernels: Data Types

Scalar data types char , uchar, short, ushort, int, uint, long, ulong,

float bool, intptr_t, ptrdiff_t, size_t, uintptr_t, void, half

(storage) Image types

image2d_t, image3d_t, sampler_t Vector data types

Vector lengths 2, 4, 8, & 16 (char2, ushort4, int8, float16, double2, …)

Vector operations

Page 82: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Building Program Objects

The program object encapsulates: A context The program source/binary List of target devices and build options

Page 83: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Synch: Queues & Events

Events can be used to synchronize kernel executions between queues

Example: 2 queues with 2 devices

Page 84: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL Summary

Page 85: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

OpenCL vs CUDA

OpenCL Plataforma heterogênea (GPUs Nvidia, ATI

Radeon; CPU Intel). Não tira o máximo aproveitamento do

hardware, como CUDA tira numa GPU Nvidia. Freeware. Possui suporte Nvidia.

CUDA Plataforma homogênea (Apenas GPUs

Nvidia). Expõe uma rápida memória compartilhada

que podem ser compartilhados entre threads. Tecnologia mais madura, possui mais

recursos. Possui suporte Nvidia.

Page 86: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Exemplos

Apple Mac OS X Snow Leopard já vem com o OpenCL

http://www.youtube.com/watch?v=r1sN1ELJfNo http://www.youtube.com/watch?v=IEWGTpsFtt8 http://www.youtube.com/watch?v=33rU1axSKhQ http://www.youtube.com/watch?v=7PAiCinmP9Y http://www.youtube.com/watch?v=-GeB1HOt_U0 http://www.youtube.com/watch?v=8z2zDwzK5Kg

Page 87: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Aplicações

• Finanças

• CAD/CAM/CAE

• Dinâmica de fluidos

• Filmes e Entretenimento

• Serviços de informação geográfica (GIS)

• Imaging

• Gás e Petróleo

• Clusters

Page 88: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Finanças

• mercado de alto risco

• algorítmos complexos modelam o mercado e ajudam os negociadores e investidores a tomarem decisão

• Monte Carlo• Avalia inúmeras variáveis como taxa de juros,

preços de commodity etc.• Consome muito tempo

Page 89: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Finanças

• SciFinancial – desenvolvido por SciComp

• Software que gera código C/C++ de espeficicações de modelos em alto nível

• Código compilável para GPU• faz uso da sua capacidade de paralelização • ganho de velocidade variando entre 30 e 100 vezes

com uma NVIDIA Tesla C1060 GPU• Velocidade aumenta aproximadamente linearmente com

o aumento do número de GPUs

Solução com GPU

Page 90: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

CAD/CAM/CAE

• Tradicionalmente, designers criam amostras reais para prototipar e mostrar para investidores

• Processo caro e demorado

• OptiTex moderniza o processo tradicional usando uma engine 3D própria

• Permite simular o visual e o movimento das peças em modelos virtuais • São Paulo Fashion week Virtual ?

Page 91: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

CAD/CAM/CAE

Solução com GPU

• 190 dias eram nesecessários no desenvolvimento de um produto

• 35 dias são nescessários atualmente após reconstrução de sua engine usando GPU

Page 92: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Dinâmica de fluidos

• National Center for Atmospheric Research (NCAR) desenvolveu um modelo de previsão de tempo bastante sofisticado• Aplicações saindo da escala dos Terabytes para a dos Petabytes

• Crescendo além dos clusters convencionais

Page 93: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Dinâmica de fluidos

Solução com GPU

• portaram o modelo para CUDA

• ganho de 10X em calculos de microfísica ( < 1% do código )

• aumento em 20% da velocidade do modelo em geral

Page 94: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Filmes e Entretenimento

• Weta digital ficou responsável por criar sequências com 800 “CGs characters”

• Quantidade de poligonos medidos em bilhões no lugar dos milhões

Page 95: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Filmes e Entretenimento

• Weta e NVIDIA criaram uma engine chamada PentaRay

• Alcançaram um ganho de velocidade de 25X depois de portarem a engine para CUDA

• NVIDIA Tesla® S1070

Solução com GPU

Page 96: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

GIS

• Planejadores usam aplicações GIS para:• mapear informações de localização• dados demográficos• população• layout das ruas e avenidas• etc

• Conjunto de dados não para de crescer. Gigabytes de:• mapas interativos• camadas de superfície• imagens

Page 97: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

GIS

• Menifold.net converteu seu Software para CUDA

• Programas que rodavam em 20 minutos rodam em 30 segundos

Solução com GPU

• Programas que rodavam em 30 – 40 segundos rodam em tempo real

Page 98: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Imaging

• Professor Hongen Liao desenvolveu uma maneira de projetar obejtos 3D no ar ( Integral Videography )

• Em 2001:• 10 segundos para gerar um único frame com um pentium 3 a 800MHz• 5 fps usando UltraSPARC III 900 MHz

• Não era rápido o suficiente...

Page 99: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Imaging

• Teste em uma GeForce® 8800 GTX geraram 13 – 14 fps

• CUDA foi usada como Plataforma de desenvolvimento

Solução com GPU

Page 100: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Gás e Petróleo

• Custo de perfurações são muito altos

• Modelagens 3D são utilizadas para achar lugares potenciais

• O cluster da SeismicCity precisaria de 20.000 CPUS para rodar seu algoritmo

Page 101: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Gás e Petróleo

• Porte para NVIDIA® Tesla™ S870 resultou em ganho de 20X na performance

• Solução com CUDA permite usar novos códigos mais rapidamente e com menor custo

Solução com GPU

Page 102: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Clusters

• NCSA desenvolveu código open source ( HOOMD-blue )• código para dinâmica molecular

Page 103: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Clusters

• Simulação, em GPU, roda na mesma velocidade que nos 128 CPUs de um Cray XT3

Solução com GPU

Page 104: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Futuro

• cGPU• Cores agrupados em 32 unidades• 16 grupos • 512 cores no total• GDDR5

Page 105: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Futuro

• Hardware Thread Schedule (HTS)• trata o escalonamento para o programador

Page 106: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Futuro

Page 107: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Conclusão

• Alto poder de paralelização

• Multidiciplinar

• Capacidade de realizar muitos cálculos de ponto flutuante

• Suporte à várias bibliotecas

Page 108: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Dúvidas

?

Page 109: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Referências• http://www.verlab.dcc.ufmg.br/_media/cursos/arquitetura/2007-1/grupo3/seminario_gru

po3.pdf• http://www.uri.com.br/~adario/disciplinas/AC2/files/Artigo%20GPU.pdf• http://www.tupinihon.com/tech/pdf/artigo-gpu.pdf• http://www.nvidia.com.br/• http://en.wikipedia.org/wiki/HLSL• http://en.wikipedia.org/wiki/OpenGL_Shading_Language• http://en.wikipedia.org/wiki/Cg_(programming_language)• http://www.davidcornette.com/glsl/intro.html• http://www.lighthouse3d.com/opengl/glsl/index.php?intro• http://devtuts.com.br/wp/2010/04/introducao-completa-aos-shaders/• http://desenvolvimentodejogos.wikidot.com/shaders• http://www.gdhpress.com.br/blog/shaders/• Computacão de alto desempenho utilizando CUDA• Bruno Cardoso Lopes, Rodolfo Jardim de Azevedo• URL: www.brunocardoso.cc/cuda/cuda.pdf• Blog do John Tortugo• URL: http://johntortugo.wordpress.com/2008/12/30/cuda-modelo-de-programacao-para

lela/

Page 110: LOGO “ Add your company slogan ” GPGPU: OpenCL, CUDA e Shaders Introdução à Multimídia – CIn - UFPE

Referências• http://www.verlab.dcc.ufmg.br/_media/cursos/arquitetura/2007-• http://www.khronos.org/opencl/• http://www.khronos.org/developers/library/overview/opencl_overview.pdf• http://www.gdhpress.com.br/blog/opencl/• http://www.guiadohardware.net/noticias/2008-12/493F5D72.html• http://www.guiadohardware.net/noticias/2010-06/opencl.html• http://pt.wikipedia.org/wiki/OpenCL• http://developer.nvidia.com/object/opencl.html• http://developer.download.nvidia.com/OpenCL/NVIDIA_OpenCL_JumpStart_Guide.pdf• http://www.nvidia.com/object/cuda_opencl_new.html• http://www.nvidia.com.br/object/cuda_opencl_br.html• http://images.apple.com/br/macosx/technology/docs/OpenCL_TB_brief_20090608.pdf