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.
Programa do Curso
Introdução
- O que é CUDA?
- CUDA vs OpenCL vs SYCL
- Visão geral dos recursos e da arquitetura CUDA
- Configurando o ambiente de desenvolvimento
Primeiros passos
- Criando um novo projeto CUDA usando o código Visual Studio
- Explorando a estrutura e os arquivos do projeto
- Compilando e executando o programa
- Exibindo a saída usando printf e fprintf
API CUDA
- Entendendo a função da API CUDA no programa host
- Usando a API CUDA para consultar informações e recursos do dispositivo
- Usando a API CUDA para alocar e desalocar a memória do dispositivo
- Usar a API CUDA para copiar dados entre o host e o dispositivo
- Usar a API CUDA para iniciar kernels e sincronizar threads
- Usando a API CUDA para tratar erros e exceções
CUDA C/C++
- Entendendo o papel da CUDA C/C++ no programa do dispositivo
- Usando CUDA C/C++ para escrever kernels que executam no GPU e manipulam dados
- Usando tipos de dados, qualificadores, operadores e expressões CUDA C/C++
- Utilizar funções incorporadas em CUDA C/C++, tais como math, atomic, warp, etc.
- Usando variáveis incorporadas em CUDA C/C++, como threadIdx, blockIdx, blockDim, etc.
- Uso de bibliotecas CUDA C/C++, como cuBLAS, cuFFT, cuRAND, etc.
Modelo de memória CUDA
- Entendendo a diferença entre os modelos de memória do host e do dispositivo
- Usando espaços de memória CUDA, como global, compartilhado, constante e local
- Usando objetos de memória CUDA, como ponteiros, matrizes, texturas e superfícies
- Usando modos de acesso à memória CUDA, como somente leitura, somente gravação, leitura-escrita, etc.
- Usando o modelo de consistência de memória CUDA e mecanismos de sincronização
Modelo de execução CUDA
- Entendendo a diferença entre os modelos de execução do host e do dispositivo
- Uso de threads, blocos e grades CUDA para definir o paralelismo
- Usando funções de thread CUDA, como threadIdx, blockIdx, blockDim, etc.
- Usando funções de bloco CUDA, como __syncthreads, __threadfence_block, etc.
- Utilização de funções de grelha CUDA, como gridDim, gridSync, grupos cooperativos, etc.
Depuração
- Entendendo os erros e bugs comuns em programas CUDA
- Usando o Visual Studio Depurador de código para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
- Usando o CUDA-GDB para depurar programas CUDA em Linux
- Usando o CUDA-MEMCHECK para detetar erros e vazamentos de memória
- Usando o NVIDIA Nsight para depurar e analisar programas CUDA no Windows
Otimização
- Entendendo os fatores que afetam o desempenho dos programas CUDA
- Usar técnicas de coalescência CUDA para melhorar a taxa de transferência de memória
- Uso de técnicas de cache e pré-busca da CUDA para reduzir a latência da memória
- Usando a memória compartilhada CUDA e técnicas de memória local para otimizar os acessos à memória e a largura de banda
- Usando ferramentas de criação de perfil e perfilamento CUDA para medir e melhorar o tempo de execução e a utilização de recursos
Resumo e próximas etapas
Requisitos
- Conhecimento da linguagem C/C++ e dos conceitos de programação paralela
- Conhecimentos básicos 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 CUDA para programar NVIDIA GPUs e explorar 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 GPU e otimizar o desempenho do código
28 Horas
Declaração de Clientes (2)
Muito interativo com vários exemplos, com uma boa progressão de complexidade entre o início e o fim da formação.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Máquina Traduzida
A energia e o humor dos formadores.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Máquina Traduzida