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

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

Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás

Apresentações semelhantes


Apresentação em tema: "Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás"— Transcrição da apresentação:

1 Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás divcesar@gmail.com

2 Crônograma Introdução [10:30 até 11:00] Arquitetura [11:00 até 11:15] O que é CUDA? [11:15 até 11:30] Aplicações [11:30 até 11:40] Exemplo de Código [11:40 até 11:50] Futuro [11:50 até 12:00] Dúvidas [12:00 até ~]

3 Introdução – Modelos de Programação SISD (Single instruction single data) Fluxo sequêncial de instruções e dados

4 Introdução – Modelos de Programação SIMD (Single Instruction Multiple Data) A mesma instrução com dados diferentes

5 Introdução – Modelos de Programação MISD (Multiple Instruction Single Data) Multiplas instruções para o mesmo dado

6 Introdução – Modelos de Programação MIMD (Multiple Instruction Multiple Data) Multiplas instruções e multiplos dados

7 Introdução – Porquê GPU? Baixo Custo Alto Desempenho Relativamente fácil de ser programada Programas são portáveis Escalável Possibilita programação “heterogênea” Relação Custo/Beneficio extremamente alta

8 Introdução – Comparando a Performance Gráfico comparativo com CPU 3.0 GHZ

9 Introdução – Lista de NVIDIA GPU’S ModeloProcessadoresClockMem. Clock GForce 8400 GS16450 MHz400 MHz GForce 8800 GT96550 MHz800 MHz GForce 9600 GT641,2 GHz750 MHz GForce 9800 GT1121,5 GHz900 MHz Tesla C10602401,3 GHz800 MHz Tesla S10709601,44 GHz-

10 Introdução – Diferenças entre GPU e CPU Quantidade de processadores Velocidade de acesso a memória Arquitetura projetada para paralelismo

11 Introdução – Benefícios da Prog. Paralela Um pesquisador um supercomputador Possibilidade de resolver problemas maiores Solução para os problemas de arquitetura Possibilita aplicações, mais realistas Desenvolvimento acelerado da computação científica

12 Arquitetura – Hierarquia de Memória Memória local por thread Memória compartilhada no bloco Memória constante por grid Memória global por grid Essa hierarquia foi projetada para permitir compartilhamento de tarefas entre as threads e reduzir acesso a memória externa.

13 Arquitetura – CUDA SDK

14 CUDA – O que é? CUDA – (Computing Unified Device Architecture) Extensão para a linguagem C, Python, Java, Fortran...

15 CUDA – O Básico Device = GPU = conjunto de multiprocessadores Host = CPU Multiprocessador = Conjunto de processadores Kernel = Programa executável na GPU Grid = Array de threads que executam um Kernel Bloco de Thread = Grupo de threads executando no modelo SIMD.

16 CUDA – Visão Geral Funções Matemáticas sinf, powf, atanf, ceil, etc Tipos primitivos float4, int4, unit4, etc Modificadores de funções __global__// chamada via host __device__// chamada via kernel __host__// chamada e executa no host Modificadores de variáveis __constant__// memória constante __device__// no device, memória global __shared__// compartilhada

17 CUDA – Visão Geral Configuração de execução kernel_cod >>(...); Variáveis globais gridDim = Tamanho do grid blockDim = Tamanho do bloco blockIdx = Índice do bloco no grid threadIdx = Índice da thread no bloco Funções globais __syncthreads(); Gerenciamento de memória cudaMalloc();// Alocação de memória cudaFree();// Desalocação de memória cudaMemcpy();// Copia memória

18 CUDA – Tipos de Memória Memória Local Local a thread, acesso de leitura/escrita Memória Compartilhada Local ao bloco, acesso de leitura/escrita Memória Global Todas as threads mais o host, leitura/escrita Memória Constante Todas as threads mais o host, apenas leitura

19 CUDA – Extensões e Bibliotecas pyCUDA – CUDA for Python jaCUDA – CUDA for Java CuBLAS – Utilizada para Álgebra Linear CuFFT – Transformações de Fourier jCublas – Java para Álgebra Linear

20 CUDA – Exemplo de Código

21 Aplicações – Nicho de desenvolvimento Uso intensivo de cálculos –Algebra Linear –Física Uso de largura de banda –Mercado Financeiro –Dados Genômicos –Banco de Dados Computação Visual –Processamento de Imagens –Tomográfia –Visão de Máquina

22 Aplicações – Casos reais

23 Exemplo – Somar Vetores em C __global__ void incrementArrayOnDevice(float *a, float *b, float *c, int N) { int idx = blockIdx.x*blockDim.x + threadIdx.x; if (idx<N) c[idx] = a[idx] + a[idx]; } void incrementArrayOnHost(float *a, float *b, float *c, int N) { int i; for (i=0; i < N; i++) c[i] = a[i] + b[i]; } // Chamada do Kernel incrementArrayOnDevice >> (a, b, c, N); KERNEL HOST

24 Exemplo – Multiplicar Vetor com pyCUDA mod = drv.SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) multiply_them = mod.get_function("multiply_them") a = numpy.random.randn(400).astype(numpy.float32) b = numpy.random.randn(400).astype(numpy.float32) dest = numpy.zeros_like(a) multiply_them(drv.Out(dest), drv.In(a), drv.In(b), block=(400,1,1)) KERNEL HOST

25 Futuro – Supercomputador pessoal Tesla Primeiro computador do mundo com vários núcleos na faixa de teraflops. 960 núcleos. Processamento de alto paralelismo. 250 vezes a performance de computação de um PC.

26 Futuro – Integração CPU e GPU Como será o processador no futuro?

27 Obrigado pela atenção! Dúvidas? Divino César S. Lucas Universidade Católica de Goiás divcesar@gmail.com


Carregar ppt "Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás"

Apresentações semelhantes


Anúncios Google