Entrar em Contato
 Duração 28 horas

Programa do Curso

Introdução

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

Primeiros Passos

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

API do OpenCL

  • Compreensão do papel da API do OpenCL no programa do anfitrião
  • Utilização da API do OpenCL para consultar informações e capacidades do dispositivo
  • Utilização da API do OpenCL para criar contextos, filas de comandos, buffers, kernels e eventos
  • Utilização da API do OpenCL para enfileirar comandos, como leitura, escrita, cópia, mapeamento, desmapeamento, execução e espera
  • Utilização da API do OpenCL para tratar erros e exceções

OpenCL C

  • Compreensão do papel do OpenCL C no programa do dispositivo
  • Utilização do OpenCL C para escrever kernels que sejam executados no dispositivo e manipulados dados
  • Utilização de tipos de dados, qualificadores, operadores e expressões do OpenCL C
  • Utilização de funções integradas do OpenCL C, como matemática, geométricas, relacionais, etc.
  • Utilização de extensões e bibliotecas do OpenCL C, como atomic, image, cl_khr_fp16, etc.

Modelo de Memória do OpenCL

  • Compreensão da diferença entre os modelos de memória do anfitrião e do dispositivo
  • Utilização de espaços de memória do OpenCL, como global, local, constante e privado
  • Utilização de objetos de memória do OpenCL, como buffers, imagens e pipes
  • Utilização de modos de acesso à memória do OpenCL, como somente leitura, somente escrita, leitura/escrita, etc.
  • Utilização do modelo de consistência de memória e mecanismos de sincronização do OpenCL

Modelo de Execução do OpenCL

  • Compreensão da diferença entre os modelos de execução do anfitrião e do dispositivo
  • Utilização de work-items, work-groups e ND-ranges do OpenCL para definir o paralelismo
  • Utilização de funções de work-item do OpenCL, como get_global_id, get_local_id, get_group_id, etc.
  • Utilização de funções de work-group do OpenCL, como barrier, work_group_reduce, work_group_scan, etc.
  • Utilização de funções de dispositivo do OpenCL, como get_num_groups, get_global_size, get_local_size, etc.

Depuração

  • Compreensão dos erros e bugs comuns em programas OpenCL
  • Utilização do depurador do Visual Studio Code para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
  • Utilização do CodeXL para depurar e analisar programas OpenCL em dispositivos AMD
  • Utilização do Intel VTune para depurar e analisar programas OpenCL em dispositivos Intel
  • Utilização do NVIDIA Nsight para depurar e analisar programas OpenCL em dispositivos NVIDIA

Otimização

  • Compreensão dos fatores que afetam o desempenho dos programas OpenCL
  • Utilização de tipos de dados vetoriais e técnicas de vetorização do OpenCL para melhorar a largura de banda aritmética
  • Utilização de técnicas de desenrolamento de laços e tiling de laços do OpenCL para reduzir a sobrecarga de controlo e aumentar a localidade
  • Utilização de memória local e funções de memória local do OpenCL para otimizar acessos à memória e largura de banda
  • Utilização de profiling e ferramentas de profiling do OpenCL 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 computadores e hierarquia de memória
  • Experiência com ferramentas de linha de comandos e editores de código

Público-Alvo

  • Desenvolvedores que pretendam aprender a utilizar o OpenCL para programar dispositivos heterogéneos e explorar o seu paralelismo
  • Desenvolvedores que pretendam escrever código portátil e escalável que possa ser executado em diferentes plataformas e dispositivos
  • Programadores que pretendam explorar os aspetos de baixo nível da programação heterogénea 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