Entrar em Contato
 Duração 28 horas

Programa do Curso

Introdução

  • O que é o CUDA?
  • CUDA vs OpenCL vs SYCL
  • Visão geral das funcionalidades e arquitetura do CUDA
  • Configuração do Ambiente de Desenvolvimento

Início

  • Criação de um novo projeto CUDA utilizando o Visual Studio Code
  • Exploração da estrutura do projeto e ficheiros
  • Compilação e execução do programa
  • Exibição da saída utilizando printf e fprintf

API do CUDA

  • Compreensão do papel da API do CUDA no programa anfitrião (host)
  • Utilização da API do CUDA para consultar informações e capacidades do dispositivo
  • Utilização da API do CUDA para alocar e desalocar memória do dispositivo
  • Utilização da API do CUDA para copiar dados entre anfitrião (host) e dispositivo
  • Utilização da API do CUDA para lançar kernels e sincronizar threads
  • Utilização da API do CUDA para lidar com erros e exceções

CUDA C/C++

  • Compreensão do papel do CUDA C/C++ no programa do dispositivo
  • Utilização do CUDA C/C++ para escrever kernels que são executados na GPU e manipulam dados
  • Utilização de tipos de dados, qualificadores, operadores e expressões do CUDA C/C++
  • Utilização de funções integradas do CUDA C/C++, como matemática, atómicas, warp, etc.
  • Utilização de variáveis integradas do CUDA C/C++, como threadIdx, blockIdx, blockDim, etc.
  • Utilização de bibliotecas do CUDA C/C++, como cuBLAS, cuFFT, cuRAND, etc.

Modelo de Memória do CUDA

  • Compreensão da diferença entre os modelos de memória do anfitrião (host) e do dispositivo
  • Utilização de espaços de memória do CUDA, como global, partilhado (shared), constante e local
  • Utilização de objetos de memória do CUDA, como ponteiros, arrays, texturas e superfícies
  • Utilização de modos de acesso à memória do CUDA, como somente leitura, somente escrita, leitura-escrita, etc.
  • Utilização do modelo de consistência de memória do CUDA e mecanismos de sincronização

Modelo de Execução do CUDA

  • Compreensão da diferença entre os modelos de execução do anfitrião (host) e do dispositivo
  • Utilização de threads, blocos e grelhas (grids) do CUDA para definir a paralelização
  • Utilização de funções de thread do CUDA, como threadIdx, blockIdx, blockDim, etc.
  • Utilização de funções de bloco do CUDA, como __syncthreads, __threadfence_block, etc.
  • Utilização de funções de grelha (grid) do CUDA, como gridDim, gridSync, cooperative groups, etc.

Depuração

  • Compreensão dos erros e bugs comuns em programas CUDA
  • Utilização do depurador do Visual Studio Code para inspecionar variáveis, pontos de interrupção (breakpoints), pilha de chamadas (call stack), etc.
  • Utilização do CUDA-GDB para depurar programas CUDA no Linux
  • Utilização do CUDA-MEMCHECK para detetar erros e fugas de memória
  • Utilização do NVIDIA Nsight para depurar e analisar programas CUDA no Windows

Otimização

  • Compreensão dos fatores que afetam o desempenho dos programas CUDA
  • Utilização de técnicas de coalescing do CUDA para melhorar o débito (throughput) de memória
  • Utilização de técnicas de cache e prefetching do CUDA para reduzir a latência de memória
  • Utilização de técnicas de memória partilhada (shared) e memória local do CUDA para otimizar acessos à memória e largura de banda
  • Utilização de 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 conceitos de programação paralela
  • Conhecimentos básicos de arquitetura de computador e hierarquia de memória
  • Experiência com ferramentas de linha de comandos e editores de código

Público-Alvo

  • Developers que desejam aprender a utilizar o CUDA para programar GPUs NVIDIA e explorar a sua paralelização
  • Developers que desejam escrever código de alto desempenho e escalável que possa ser executado em diferentes dispositivos CUDA
  • Programadores que desejam explorar os aspetos de baixo nível da programação de GPU e otimizar o desempenho do seu código

Formação Empresarial Personalizada

Soluções de formação concebidas exclusivamente para empresas.

  • Conteúdo Personalizado: Adaptamos o programa e os exercícios práticos aos objetivos e necessidades reais do seu projeto.
  • Horário Flexível: Datas e horários adaptados à agenda da sua equipe.
  • Formato: Online (ao vivo), In-Company (em suas instalações) ou Híbrido.
Investimento

Preço por grupo privado, formação online em direto, a partir de 5200 € + VAT*

Entre em contato conosco para obter um orçamento preciso e conhecer nossas promoções mais recentes

Próximas Formações Provisórias

Categorias Relacionadas