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

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

Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU 1.

Apresentações semelhantes


Apresentação em tema: "Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU 1."— Transcrição da apresentação:

1 Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU 1

2 Introdução a GPGPU Por que CUDA? – Desempenho versus custo – NVIDIA é líder de mercado: mais de 10 8 GPUs – Programação paralela para muitos Instalação de CUDA 1.Driver 2.CUDA toolkit (compilador e bibliotecas) 3.CUDA SDK (utilitários e exemplos) 2

3 Fundamentos de programação CUDA Modelo de programação – Host: executa a aplicação (CPU) – Dispositivo (GPU) Coprocessador da CPU Executa kernels – Host e dispositivo tem DRAMs próprias – Host: Aloca memória no dispositivo Transfere dados de entrada para o dispositivo Dispara a execução de kernels Transfere dados resultantes do dispositivo Libera memória no dispositivo 3

4 Fundamentos de programação CUDA Modelo de programação – Kernel Função geralmente escrita em C para CUDA Executa no dispositivo N vezes em N threads em paralelo – Threads são organizadas em blocos – Um bloco é um arranjo 1D, 2D ou 3D de threads Cada thread de um bloco tem um índice 1D, 2D ou 3D – Blocos são organizados em grids – Um grid é um arranjo 1D ou 2D de blocos Cada bloco de um grid tem um índice 1D ou 2D Os blocos de um grid têm o mesmo número de threads 4

5 Fundamentos de programação CUDA Exemplo: kernel executando em 72 threads – Grid 2D com: Dimensão 3×2×1 6 blocos – Blocos 2D com: Dimensão 4×3×1 12 threads cada 5

6 Fundamentos de programação CUDA Modelo de programação – Um kernel é uma função que: Começa com o especificador __global__ Tem tipo de retorno void – Kernels podem invocar outras funções que: São especificadas como __device__ Podem invocar outras especificadas como __device__ – Funções que executam no dispositivo: Não admitem número variável de argumentos Não admitem variáveis estáticas Não admitem recursão Não admitem variáveis do tipo endereço de função 6

7 Fundamentos de programação CUDA Modelo de programação – Kernels são invocados do host – Um dispositivo executa um kernel de cada vez 7

8 Fundamentos de programação CUDA Modelo de programação – Configuração de execução de um kernel Dimensões do grid e dos blocos Tamanho da memória compartilhada (opcional) Especificada na invocação (ou lançamento) do kernel – Dimensão 3D é representada por objeto do tipo dim3 – Um grid: 1D de dimensão dim3 dG tem dG.x × 1 × 1 blocos 2D de dimensão dim3 dG tem dG.x × dG.y × 1 blocos – Um bloco: 1D de dimensão dim3 dB tem dB.x × 1 × 1 threads 2D de dimensão dim3 dB tem dB.x × dB.y × 1 threads 3D de dimensão dim3 dB tem dB.x × dB.y × dB.z threads 8

9 Fundamentos de programação CUDA Modelo de programação – Identificador global de uma thread – Pode ser usado para indexar vetores em funções __global__ ou __device__ – Determinado a partir das variáveis pré-definidas: dim3 gridDim – Dimensão do grid dim3 blockDim – Dimensão do bloco dim3 blockIdx – Índice do bloco no grid dim3 threadIdx – Índice da thread no bloco 9

10 Fundamentos de programação CUDA 10 Modelo de programação – Hierarquia de memória acessada por uma thread Memória compartilhada do bloco da thread – Visível para todas as threads do bloco – Tempo de vida do bloco Memória local da thread Memória global Memória constante Memória de textura Somente leitura Tempo de vida da aplicação

11 Fundamentos de programação CUDA Modelo de programação – Capacidade de computação – Especificações: depende do dispositivo Número de multiprocessadores e processadores Dimensões de grids e blocos DRAM Memória compartilhada, etc. 11

12 Fundamentos de programação CUDA Interface de programação – C para CUDA e API de runtime – API de driver – Ambas APIs têm funções para: Gerência de memória no dispositivo Transferência de dados entre host e dispositivo Gerência de sistemas com vários dispositivos, etc. – API de runtime tem também funções para: Gerenciamento de threads Detecção de erros – Manual de referência de CUDA 12 APIs exclusivas

13 Fundamentos de programação CUDA Programa básico em C para CUDA – Seleção do dispositivo a ser usado – Alocação de memória no host – Dados de entrada na memória do host – Alocação de memória no dispositivo – Transferência de dados do host para dispositivo – Invocação do(s) kernel(s) – Transferência de dados do dispositivo para host – Liberação de memória no host – Liberação de memória no dispositivo – Finalização 13

14 Fundamentos de programação CUDA Programa básico em C para CUDA – Seleção do dispositivo a ser usado cudaSetDevice() – Alocação de memória no dispositivo cudaMalloc() – Transferência de dados entre host e dispositivo cudaMemcpy() – Liberação de memória no dispositivo cudaFree() – Finalização cudaThreadExit() 14


Carregar ppt "Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU 1."

Apresentações semelhantes


Anúncios Google