1 / 27

Computação de Alto Desempenho Utilizando Placas Gráficas

Computação de Alto Desempenho Utilizando Placas Gráficas. Divino César S. Lucas Universidade Católica de Goiás divcesar@gmail.com. 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]

tameka
Download Presentation

Computação de Alto Desempenho Utilizando Placas Gráficas

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. Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. LucasUniversidade Católica de Goiásdivcesar@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

  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áticassinf, powf, atanf, ceil, etc • Tipos primitivosfloat4, 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çãokernel_cod<<<4,4>>>(...); • Variáveis globaisgridDim = 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óriacudaMalloc(); // Alocação de memóriacudaFree(); // Desalocação de memóriacudaMemcpy(); // Copia memória

  18. CUDA – Tipos de Memória • Memória LocalLocal a thread, acesso de leitura/escrita • Memória CompartilhadaLocal ao bloco, acesso de leitura/escrita • Memória GlobalTodas as threads mais o host, leitura/escrita • Memória ConstanteTodas 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 KERNEL __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]; } HOST 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 <<< nBlocks, blockSize >>> (a, b, c, N);

  24. Exemplo – Multiplicar Vetor com pyCUDA KERNEL mod = drv.SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) HOST 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))

  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. LucasUniversidade Católica de Goiásdivcesar@gmail.com

More Related