Guia de Programação CUDA
O recurso oficial e abrangente para desenvolvedores aprenderem o modelo de programação CUDA e como escrever código de alto desempenho que execute em GPUs da NVIDIA. Este guia abrange a arquitetura da plataforma, a interface de programação, recursos avançados de hardware e especificações técnicas.
Visão Geral do Curso
Resumo do Conteúdo
O recurso oficial e abrangente para desenvolvedores aprenderem o modelo de programação CUDA e como escrever código de alto desempenho que execute em GPUs da NVIDIA. Este guia abrange a arquitetura da plataforma, a interface de programação, recursos avançados de hardware e especificações técnicas.
Domine a arte do cálculo paralelo com o guia padrão da indústria para o NVIDIA CUDA.
Autor: NVIDIA Corporation
Agradecimentos: Copyright © 2007-2024 NVIDIA Corporation & afiliadas. Todos os direitos reservados.
Objetivos de Aprendizagem
- Definir os papéis do host (CPU) e do dispositivo (GPU) em um sistema heterogêneo.
- Explicar o modelo de programação SIMT e a organização hierárquica de threads, blocos e grids.
- Diferenciar entre PTX (Parallel Thread Execution) e código binário (cubins) e explicar como a compilação Just-in-Time (JIT) facilita a compatibilidade.
- Desenvolver e Compilar Kernels CUDA: escrever funções global, configurar execução com notação de triplas setas e gerenciar o fluxo de compilação NVCC.
- Otimizar Memória e Movimentação de Dados: distinguir entre modelos de memória Unificada, Explícita e Mapeada, e implementar memória host bloqueada por página para transferências eficientes.
- Gerenciar Execução Paralela: utilizar Streams CUDA, Events e Grupos Cooperativos para gerenciar tarefas assíncronas e sincronizar operações CPU-GPU.
- Realizar aritmética de ponteiros complexa e identificar gargalos arquitetônicos (von Neumann vs. Harvard).
- Implementar padrões avançados de execução CUDA, incluindo Lançamentos Dependentes Programáticos de Kernels e Transferências de Memória em Lotes Heterogêneas.
- Utilizar recursos específicos de hardware como Escopos de Thread, Proxies Assíncronos e Pipelines para maximizar a concorrência.
- Configurar e otimizar o desempenho da Memória Unificada usando pré-carregamento, dicas de uso e gerenciamento de tamanho de página.