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 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.
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