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.
Aulas 共 5 课时 · 预计 30.0h
Aulas
Lesson
This lesson introduces the fundamental shift from latency-optimized CPU architectures to throughput-oriented GPU computing. Students will learn to distinguish between these processing models and understand how the CUDA programming platform enables massive parallel execution for data-intensive tasks.
This lesson introduces the fundamentals of CUDA kernel development, focusing on the SIMT execution model and the use of the __global__ specifier to launch parallel functions on GPU Streaming Multiprocessors. Students will learn how to manage asynchronous kernel execution, handle device memory, and structure code to ensure effective hardware utilization.
This lesson explores the fundamental differences between von Neumann and Harvard architectures, focusing on how memory access pathways impact computational performance. Students will learn to identify the von Neumann bottleneck, understand the benefits of split-cache Harvard designs, and analyze how modern systems utilize a Modified Harvard Architecture to balance throughput with programming flexibility.
AI021: Optimization, Graphs, and Hardware Accelerators (Lesson 4) explores the shift from CPU-bottlenecked stream execution to GPU-autonomous workflows. Students will learn to utilize modern primitives like CUDA Graphs, lazy loading, and asynchronous memory prefetching to minimize host-side overhead and maximize hardware efficiency.
This lesson explores the technical reference and language extensions in CUDA, focusing on the relationship between virtual architectures (PTX) and real hardware (SASS). Students will learn to manage compute capabilities, utilize architecture-specific macros, and navigate language constraints to ensure code portability and performance.