Obrigado por enviar sua consulta! Um dos membros da nossa equipe entrará em contato com você em breve.
Obrigado por enviar sua reserva! Um dos membros da nossa equipe entrará em contato com você em breve.
Duração 28 horas
Programa do Curso
Introdução
- O que é o CUDA?
- CUDA vs OpenCL vs SYCL
- Visão geral dos recursos e da arquitetura do CUDA
- Configuração do Ambiente de Desenvolvimento
Primeiros Passos
- Criando um novo projeto CUDA usando o Visual Studio Code
- Explorando a estrutura e os arquivos do projeto
- Compilando e executando o programa
- Exibindo a saída usando printf e fprintf
API do CUDA
- Entendendo o papel da API do CUDA no programa do host
- Usando a API do CUDA para consultar informações e capacidades do dispositivo
- Usando a API do CUDA para alocar e desalocar memória do dispositivo
- Usando a API do CUDA para copiar dados entre o host e o dispositivo
- Usando a API do CUDA para iniciar kernels e sincronizar threads
- Usando a API do CUDA para lidar com erros e exceções
CUDA C/C++
- Entendendo o papel do CUDA C/C++ no programa do dispositivo
- Usando o CUDA C/C++ para escrever kernels que executam na GPU e manipulam dados
- Usando tipos de dados, qualificadores, operadores e expressões do CUDA C/C++
- Usando funções integradas do CUDA C/C++, como matemáticas, atômicas, warp, etc.
- Usando variáveis integradas do CUDA C/C++, como threadIdx, blockIdx, blockDim, etc.
- Usando bibliotecas do CUDA C/C++, como cuBLAS, cuFFT, cuRAND, etc.
Modelo de Memória do CUDA
- Entendendo a diferença entre os modelos de memória do host e do dispositivo
- Usando espaços de memória do CUDA, como global, compartilhada, constante e local
- Usando objetos de memória do CUDA, como ponteiros, arrays, texturas e superfícies
- Usando modos de acesso à memória do CUDA, como somente leitura, somente gravação, leitura e gravação, etc.
- Usando o modelo de consistência de memória e os mecanismos de sincronização do CUDA
Modelo de Execução do CUDA
- Entendendo a diferença entre os modelos de execução do host e do dispositivo
- Usando threads, blocos e grades do CUDA para definir o paralelismo
- Usando funções de thread do CUDA, como threadIdx, blockIdx, blockDim, etc.
- Usando funções de bloco do CUDA, como __syncthreads, __threadfence_block, etc.
- Usando funções de grade do CUDA, como gridDim, gridSync, cooperative groups, etc.
Depuração
- Entendendo erros e bugs comuns em programas CUDA
- Usando o depurador do Visual Studio Code para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
- Usando o CUDA-GDB para depurar programas CUDA no Linux
- Usando o CUDA-MEMCHECK para detectar erros de memória e vazamentos
- Usando o NVIDIA Nsight para depurar e analisar programas CUDA no Windows
Otimização
- Entendendo os fatores que afetam o desempenho de programas CUDA
- Usando técnicas de coalescing do CUDA para melhorar o throughput de memória
- Usando técnicas de caching e prefetching do CUDA para reduzir a latência de memória
- Usando técnicas de memória compartilhada e local do CUDA para otimizar acessos à memória e largura de banda
- Usando profiling e ferramentas de profiling do CUDA para medir e melhorar o tempo de execução e a utilização de recursos
Requisitos
- Compreensão da linguagem C/C++ e dos conceitos de programação paralela
- Conhecimento básico de arquitetura de computadores e hierarquia de memória
- Experiência com ferramentas de linha de comando e editores de código
Público-Alvo
- Desenvolvedores que desejam aprender a usar o CUDA para programar GPUs NVIDIA e aproveitar seu paralelismo
- Desenvolvedores que desejam escrever código de alto desempenho e escalável que possa ser executado em diferentes dispositivos CUDA
- Programadores que desejam explorar os aspectos de baixo nível da programação de GPU e otimizar o desempenho de seu código