A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GPGPU: OpenCL, CUDA e Shaders

Apresentações semelhantes


Apresentação em tema: "GPGPU: OpenCL, CUDA e Shaders"— Transcrição da apresentação:

1 GPGPU: OpenCL, CUDA e Shaders
Introdução à Multimídia – CIn - UFPE

2 Aline Éllida D’Oleron Vasconcelos Ângelo Lima Mazer
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: Sílvio: Charamba: Márcio: Ângelo:
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 General Purpose Graphics Processing Unit
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. Estes chips são capazes de executar mais do que os cálculos de gráficos específicos para os quais foram concebidos. Eles agora são co-processadores capazes, e sua alta velocidade os torna úteis para uma variedade de aplicações. Processadores especializados em operações relacionadas com computação gráfica 3D Videogames, computadores pessoais, estações de trabalho, celulares.

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. Criadas para reduzir a carga de trabalho da Unidade Central de Processamento (CPU) que antigamente, realizava todas as tarefas. Sua primeira função, foi de processar cálculos com ponto flutuante, com o tempo, foi descoberta sua facilidade para processar imagens, visto que imagens são matrizes de números, onde cada número se transforma em um pixel. Podendo suavizar os contornos de objetos, adicionar efeitos de luz complexos e criar imagens, dentre vários outros.

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. Com o interesse por exibição gráfica crescendo, com a alta resolução e o alto desempenho Anos a frente

8 1995: Primeira placa gráfica comercial:
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. 1995: Esta placa gráfica era capaz de fazer mapeamento de textura em geometrias e possuía o algoritmo de z-buffer implementado em hardware. Agora cada geometria não precisava ser colorida individualmente. 1999: Pipeline grafico: Neste conceito, uma GPU era responsável não só pela rasterização e pela texturização dos polígonos enviados, mas também era responsável pela transformação dos vértices dos polígonos e pela iluminação dos mesmos.

9 Warcraft                                                                                                                                                                                            EverQuest                                                                                                                                                                                            EverQuest  1999  Warcraft 1994

10 2001: placas gráficas programáveis
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 2002: o processador de fragmentos também se tornou programável.
História e Evolução 2002: o processador de fragmentos também se tornou programável. GeForce FX, Radeon e Radeon X 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 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.

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
Gflops=Giga Flops. Operações de ponto flutuante por segundo.

18 Funcionamento das GPUs
Pipeline gráfico No pipeline convencional ,a aplicação envia à GPU um conjunto de vértices. Estes vértices são transformados segundo matrizes de modelagem e visualização, depois são iluminados, projetados e mapeados para a tela. Após este conjunto de operações, a GPU combina os vértices para gerar algum tipo de primitiva (ponto, linha, triangulo, etc). O rasterizador gera um fragmento para cada pixel que compõe a primitiva. Para cada fragmento, operações de mapeamento de textura, combinações de cores e testes de descarte podem ser feitos. Com o surgimento das placas gráficas programáveis, os programas de vértices e de fragmentos podem substituir alguns destes estágios. Quando um programa de vértices ou de fragmentos é ativado, todos os estágios que ele substitui devem ser implementados. Não há como, por exemplo, implementar um programa de vértices para mudar apenas a iluminação.

19 Funcionamento das GPUs
Modelo de Processamento (Stream Processing) pode processar uma maior variedade de dados e com maior paralelismo. A GPU é uma máquina paralela de processamento de stream. Stream é definido como uma seqüência de dados do mesmo tipo. Para ser eficiente, a GPU precisa fazer a computação de streams com grandes quantidades de elementos que sofram o mesmo tipo de operação. A principal diferença entre o Stream Processing e o Graphic Pipeline é que no Stream Processing o Vertex Shader e o Pixel Shader são unificados, e o Stream Processing pode processar uma maior variedade de dados e com maior paralelismo. Antigamente os processos de Pixel Shader e Vertex Shader eram feito de modo separado. O Pipeline ou processava somente Pixel Shader, ou somente Vertex Shader. As unidades de Vertex só processavam vértices, as de pixel apenas aplicavam shaders em pixels. O problema deste modelo é que as aplicações podem exigir mais operações de Pixel que Vertex shader e vice-versa. E deste modo acontece de haver ociosidade do conjunto para o processo de instruções. O jogo (ou quaisquer aplicação gráfica) tem uma implementação diferente, alguns dependendo mais das unidades de vértice, enquanto outros saturam as de pixel. Então os fabricantes de placa de vídeo precisavam ficar adivinhando, qual seria o balanceamento mais correto (vértice x pixel) para haver maior desempenho da placa. Com o surgimento dos Stream Processors este conceito mudou, pois em vez de trabalhar separadamente, ele unificou em paralelo o tratamento de vértices e pixels, ou seja, um stream processor pode tanto processar Pixel Shader, como processar Vertex Shader.

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. A computação está evoluindo de um “processamento central” na CPU para um “coprocessamento” na CPU e na GPU. Para permitir esse novo paradigma em computação, a NVIDIA inventou a arquitetura de computação paralela CUDA, que agora vem inclusa em GPUs GeForce, ION, Quadro e Tesla, representando uma base instalada significativa para os desenvolvedores de aplicativos.

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 Somente alguns comandos fixos disponíveis via API
Pipeline Fixo Somente alguns comandos fixos disponí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 Para cada vértice de entrada, gera um único vértice de saída.
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 Alguns operações possíveis que o processador de pixels pode executar:
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 RenderMan Shading Language
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 Vertex e Pixel shaders
Vertex e Pixel shaders Vertex shaders

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

45 CUDA (Compute Unified Device Architecture )
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 CUDA é composta de três abstrações principais.
Arquitetura CUDA CUDA é composta de três abstrações principais.

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

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

49 CUDA é composta de três abstrações principais.
Arquitetura CUDA CUDA é composta de três abstrações principais. Uma hierarquia de grupo de threads; Memórias compartilhadas; Sincronização via barreiras. CUDA é composta de três abstrações principais, a saber: uma hierarquia de grupo de threads, memorias compartilhadas, sincronização via barreiras – que são expostos para o programador atraves de um conjunto minimo de extenções para a linguagem C.

50 CUDA é composta de três abstrações principais.
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. Estas abstrações possibilitam o paralelismo de dados e threads. Elas levam o programador a particionar o problema em subproblemas que podem ser solucionados independentemente em paralelo e então combinar estas partes para que possam ser trabalhadas cooperativamente. Tão decomposição preserva a expressividade da linguagem e permite que as threads cooperem quando estiverem trabalhando nos subproblemas, e ao mesmo tempo permite uma evolução de performance de forma transparente já que cada subproblema pode ser agendado para ser executado em qualquer um dos núcleos disponíveis: Um programa em CUDA pode portanto executar em qualquer número de núcleos, apenas o sistema de runtime precisa saber quantos núcleos estão disponíveis.

51 Arquitetura CUDA Hierarquia de memória
Comparativo entre CPU e GPU. Um mesmo trecho de código é executado em paralelo para diferentes blocos de dados e com uma cache para cada núcleo da GPU. Em uma dada aplicação, um mesmo trecho de código é executado em paralelo para pequenos blocos de dados, com a existência de várias pequenas caches e níveis de hierarquia de memória que escondem a latência de acesso a estes blocos. Estas pequenas caches são também chamadas de memórias on-chip compartilhadas e possuem acesso rápido para leitura e escrita, permitindo o compartilhamento de tarefas entre as threads. Estas memórias são parte da tecnologia de hierarquia de memória que diminui o acesso as memórias externas e, portanto, reduz o tempo de execução dos aplicativos.

52 Arquitetura CUDA Hierarquia de memória
Comparativo entre CPU e GPU. Um mesmo trecho de código é executado em paralelo para diferentes blocos de dados e com uma cache para cada núcleo da GPU. Estas pequenas caches possuem acesso rápido para leitura e escrita, permitindo o compartilhamento de tarefas entre as threads. Reduzindo o acesso a memórias externas, diminuindo a latência. Em uma dada aplicação, um mesmo trecho de código é executado em paralelo para pequenos blocos de dados, com a existência de várias pequenas caches e níveis de hierarquia de memória que escondem a latência de acesso a estes blocos. Estas pequenas caches são também chamadas de memórias on-chip compartilhadas e possuem acesso rápido para leitura e escrita, permitindo o compartilhamento de tarefas entre as threads. Estas memórias são parte da tecnologia de hierarquia de memória que diminui o acesso as memórias externas e, portanto, reduz o tempo de execução dos aplicativos.

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

54 Bibliotecas de Runtime.
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.

55 Bibliotecas de Runtime.
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. Funções para CPU: Gerenciamento: GPU Memória Controle de tempo de execução Interoperabilidade entre OpenGL e Direct3D

56 Bibliotecas de Runtime.
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. Funções para CPU: Gerenciamento: GPU Memória Controle de tempo de execução Interoperabilidade entre OpenGL e Direct3D Funções para GPU: Matemáticas Otimizadas Sincronização das Threads Texturas Funções para garantir atomicidade

57 Requisitos para a utilização
Usando CUDA Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série 8 ou superior

58 Requisitos para a utilização
Usando CUDA Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série 8 ou superior NVIDIA Quadro

59 Requisitos para a utilização
Usando CUDA Requisitos para a utilização Placas Gráficas: NVIDIA GeForce série 8 ou superior NVIDIA Quadro NVIDIA Tesla

60 Requisitos para a utilização
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

61 Várias aplicações com CUDA
NVIDIA CUDA Day Demos - Feb. 2010, San Francisco Simulação de Partículas em tempo real NVIDIA CUDA realtime particles demo

62 OpenCL O que é OpenCL? Working Group Timeline OpenCL 1.1
Processor Parallelism It’s a heterogeneous World Arquitetura OpenCL OpenCL At Work Models Programming Kernels Summary Exemplos

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

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

65 Diversa participação da indústria
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

66 OpenCL Working Group

67 OpenCL Timeline Inicialmente desenvolvida pela Apple Apple submeteu proposta inicial ao Khronos Group Aprovada como release pública

68 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

69 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

70 Processor Parallelism

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

72 Arquitetura OpenCL

73 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

74 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

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

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

77 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

78 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

79 OpenCL Memory Model Private Memory Local Memory Global/Constant Memory
Per work-item Local Memory Shared within a workgroup Global/Constant Memory Visible to all workgroups Host Memory On the CPU

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

81 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

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

83 OpenCL Synch: Queues & Events
Events can be used to synchronize kernel executions between queues Example: 2 queues with 2 devices

84 OpenCL Summary

85 OpenCL vs CUDA OpenCL CUDA
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.

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

87 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

88 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

89 Finanças Solução com GPU 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

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

91 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

92 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

93 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

94 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

95 Filmes e Entretenimento
Solução com GPU 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

96 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

97 GIS Solução com GPU Menifold.net converteu seu Software para CUDA
Programas que rodavam em 20 minutos rodam em 30 segundos Programas que rodavam em 30 – 40 segundos rodam em tempo real

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

99 Imaging Solução com GPU
Teste em uma GeForce® 8800 GTX geraram 13 – 14 fps CUDA foi usada como Plataforma de desenvolvimento

100 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 CPUS para rodar seu algoritmo

101 Gás e Petróleo Solução com GPU
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

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

103 Clusters Solução com GPU
Simulação, em GPU, roda na mesma velocidade que nos 128 CPUs de um Cray XT3

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

105 Futuro Hardware Thread Schedule (HTS)
trata o escalonamento para o programador

106 Futuro

107 Conclusão Alto poder de paralelização Multidiciplinar
Capacidade de realizar muitos cálculos de ponto flutuante Suporte à várias bibliotecas

108 Dúvidas ?

109 Referências Computacão de alto desempenho utilizando CUDA Bruno Cardoso Lopes, Rodolfo Jardim de Azevedo URL: Blog do John Tortugo URL:

110 Referências


Carregar ppt "GPGPU: OpenCL, CUDA e Shaders"

Apresentações semelhantes


Anúncios Google