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 é OpenCL?
- OpenCL vs CUDA vs SYCL
- Visão geral dos recursos e arquitetura do OpenCL
- Configurando o Ambiente de Desenvolvimento
Iniciando
- Criando um novo projeto em OpenCL usando Visual Studio Code
- Explorando a estrutura do projeto e os arquivos
- Compilando e executando o programa
- Exibindo a saída usando printf e fprintf
API do OpenCL
- Compreendendo o papel da API do OpenCL no programa host
- Usando a API do OpenCL para consultar informações e capacidades do dispositivo
- Usando a API do OpenCL para criar contextos, filas de comandos, buffers, kernels e eventos
- Usando a API do OpenCL para enfileirar comandos, como leitura, escrita, cópia, mapeamento, desmapeamento, execução e espera
- Usando a API do OpenCL para lidar com erros e exceções
Linguagem C do OpenCL
- Compreendendo o papel da linguagem C do OpenCL no programa de dispositivo
- Usando a linguagem C do OpenCL para escrever kernels que se executam no dispositivo e manipulam dados
- Usando tipos de dados, qualificadores, operadores e expressões da linguagem C do OpenCL
- Usando funções incorporadas da linguagem C do OpenCL, como matemáticas, geométricas, relacional, etc.
- Usando extensões e bibliotecas da linguagem C do OpenCL, como atomic, image, cl_khr_fp16, etc.
Modelo de Memória do OpenCL
- Compreendendo a diferença entre os modelos de memória host e dispositivo
- Usando espaços de memória do OpenCL, como global, local, constante e privada
- Usando objetos de memória do OpenCL, como buffers, imagens e pipes
- Usando modos de acesso à memória do OpenCL, como somente leitura, somente escrita, leitura-escrita, etc.
- Usando o modelo de consistência de memória e mecanismos de sincronização do OpenCL
Modelo de Execução do OpenCL
- Compreendendo a diferença entre os modelos de execução host e dispositivo
- Usando work-items, work-groups e ND-ranges do OpenCL para definir o paralelismo
- Usando funções de work-item do OpenCL, como get_global_id, get_local_id, get_group_id, etc.
- Usando funções de work-group do OpenCL, como barrier, work_group_reduce, work_group_scan, etc.
- Usando funções de dispositivo do OpenCL, como get_num_groups, get_global_size, get_local_size, etc.
Depuração
- Compreendendo os erros e bugs comuns em programas do OpenCL
- Usando o depurador do Visual Studio Code para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
- Usando o CodeXL para depurar e analisar programas em OpenCL em dispositivos AMD
- Usando o Intel VTune para depurar e analisar programas em OpenCL em dispositivos Intel
- Usando o NVIDIA Nsight para depurar e analisar programas em OpenCL em dispositivos NVIDIA
Otimização
- Compreendendo os fatores que afetam o desempenho dos programas em OpenCL
- Usando tipos de dados vetoriais e técnicas de vetorização do OpenCL para melhorar a throughput aritmética
- Usando técnicas de desenrolamento de laços e tiling do OpenCL para reduzir a overhead de controle e aumentar a localidade
- Usando memória local e funções de memória local do OpenCL para otimizar acessos à memória e largura de banda
- Usando profiling e ferramentas de profiling do OpenCL para medir e melhorar o tempo de execução e a utilização de recursos
Resumo e Próximos Passos
Requisitos
- Compreensão da linguagem C/C++ e 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 OpenCL para programar dispositivos heterogêneos e explorar seu paralelismo
- Desenvolvedores que desejam escrever código portátil e escalável que possa ser executado em diferentes plataformas e dispositivos
- Programadores que desejam explorar os aspectos de baixo nível da programação heterogênea e otimizar o desempenho do código
             28 Horas
        
        
