Entrar em Contato

Programa do Curso

Introdução à Computação Acelerada por GPU

  • Computação heterogênea e a arquitetura CPU-GPU
  • Espaços de execução e memória do CUDA
  • Compilação de CUDA C++ com nvcc e CMake
  • Verificação do ambiente de desenvolvimento de GPU

Algoritmos Paralelos com Thrust e CUB

  • Ordenação, redução e transformação aceleradas por GPU
  • Refatoração de algoritmos STL para execução em GPU
  • Vetores de dispositivo (device vectors) do Thrust e políticas de execução
  • Primitivos de abrangência total do CUB para pipelines personalizados

Arquitetura e Gerenciamento de Memória de GPU

  • Tipos de memória global, constante e de textura
  • Alocação explícita de memória de dispositivo e transferências
  • Memória Unificada para acesso simplificado aos dados
  • Coalescimento de memória e otimização de padrões de acesso

Execução Assíncrona com Fluxos CUDA

  • Criação e gerenciamento de fluxos (streams) CUDA
  • Sobreposição da execução de kernels com transferências de dados
  • Eventos do CUDA para gerenciamento de dependências
  • Prioridade de fluxos e ajuste de concorrência

Escrita de Kernels CUDA Personalizados

  • O modelo de programação SIMT e execução por warps
  • Configuração de lançamento de kernels e loops de passo da grade (grid-stride)
  • Indexação de threads e grades multidimensionais
  • Tratamento de erros e verificações da API de tempo de execução do CUDA

Hierarquia de Threads e Modelo de Execução

  • Graus, blocos e threads no código do dispositivo
  • Primitivos em nível de warp e operações de voto (ballot)
  • Sincronização em nível de bloco e barreiras
  • Análise de ocupância e utilização de recursos

Grupos Cooperativos para Paralelismo Flexível

  • A API cooperative_groups e os tipos de grupo
  • Tiles de blocos de threads e tiled_partition
  • Lançamentos cooperativos em nível de grade (grid)
  • Padrões de sincronização multi-grade (multi-grid)

Técnicas de Otimização com Memória Compartilhada

  • Bancos de memória compartilhada e evitamento de conflitos de bancos
  • Estratégias de tiling para operações matriciais
  • Memória compartilhada como cache gerenciado pelo usuário
  • cuda::shared_memory_mdspan para visualizações multidimensionais

Fusão de Kernels e Padrões Paralelos Avançados

  • Fundir múltiplos kernels para reduzir a sobrecarga de lançamento
  • Scan, redução por chave e algoritmos segmentados
  • Operações atômicas e estruturas de dados sem bloqueio (lock-free)
  • Atomics agregados por warp para melhorar a taxa de transferência

Perfiling e Otimização com Nsight Systems

  • Análise da linha do tempo da atividade da CPU e GPU
  • Identificação de gargalos na transferência de memória
  • Perfiling de desempenho de kernels e ocupância
  • Otimização iterativa com Nsight Compute

Recursos Modernos do C++ no Código CUDA do Dispositivo

  • Lambdas, constexpr e auto em kernels
  • Algoritmos paralelos do C++17 e políticas de execução
  • Conceitos (concepts) e ranges do C++20 no dispositivo
  • Suporte do C++23 no nvcc e CCCL 3.x

Grafos CUDA e Assincronia Avançada

  • Definição e lançamento de grafos CUDA
  • Captura de gráficos a partir da execução de fluxos
  • Atualização de gráficos e nós de execução condicional
  • Redução da latência de lançamento para cargas de trabalho iterativas

Padrões de Integração para Aplicativos Existentes

  • Envolver o código GPU atrás de interfaces C++
  • Gerenciar sistemas multi-GPU e NUMA
  • Integração com sistema de compilação usando CMake e CUDA
  • Depuração do código do dispositivo com cuda-gdb

Resumo e Melhores Práticas

  • Escolha entre Thrust, CUB e kernels personalizados
  • Portabilidade de desempenho entre arquiteturas de GPU
  • Organização do código e RAII para recursos CUDA
  • Próximos passos e caminhos avançados de aprendizado em CUDA

Requisitos

  • Conhecimento básico de C++, incluindo expressões lambda, templates e a STL
  • Familiaridade com algoritmos padrão, contêineres e iteradores
  • Conforto com laços de repetição, condicionais e funções
  • Não é necessário conhecimento prévio de CUDA ou programação para GPU

Público-Alvo

  • Desenvolvedores C++ que buscam acelerar aplicativos intensivos em computação com GPUs
  • Engenheiros de software migrando de programação exclusiva para CPU para programação paralela heterogênea
  • Engenheiros de desempenho e desenvolvedores quantitativos que trabalham com grandes conjuntos de dados
 8 Horas

Número de participantes


Preço por participante

Testemunhos de Clientes (3)

Próximas Formações Provisórias

Categorias Relacionadas