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 das características e da arquitetura do OpenCL
- Configurando o ambiente de desenvolvimento
Primeiros passos
- Criando um novo projeto OpenCL usando o código Visual Studio
- Explorando a estrutura e os arquivos do projeto
- Compilação e execução do programa
- Exibindo a saída usando printf e fprintf
API OpenCL
- Entendendo o papel da API OpenCL no programa host
- Usando a API OpenCL para consultar informações e capacidades do dispositivo
- Usando a API OpenCL para criar contextos, filas de comandos, buffers, kernels e eventos
- Utilizar a API OpenCL para colocar comandos em fila de espera, como ler, escrever, copiar, mapear, desmapear, executar e esperar
- Utilização da API OpenCL para tratar erros e excepções
OpenCL C
- Compreender o papel do OpenCL C no programa do dispositivo
- Usar OpenCL C para escrever kernels que executam no dispositivo e manipulam dados
- Usar tipos de dados, qualificadores, operadores e expressões do OpenCL C
- Utilizar funções incorporadas em OpenCL C, como matemáticas, geométricas, relacionais, etc.
- Utilizando OpenCL extensões e bibliotecas C, tais como atómica, imagem, cl_khr_fp16, etc.
OpenCL Modelo de memória
- Compreender a diferença entre os modelos de memória do hospedeiro e do dispositivo
- Usando espaços de memória OpenCL, como global, local, constante e privado
- Usando objetos de memória OpenCL, como buffers, imagens e pipes
- Usando OpenCL modos de acesso à memória, como somente leitura, somente gravação, leitura-escrita, etc.
- Utilização do modelo de consistência de memória OpenCL e de mecanismos de sincronização
Modelo de execução OpenCL
- Entendendo a diferença entre os modelos de execução do host e do dispositivo
- Utilização de OpenCL work-items, work-groups e ND-ranges para definir o paralelismo
- Utilização de funções de work-item OpenCL, tais como get_global_id, get_local_id, get_group_id, etc.
- Utilização de OpenCL funções de grupo de trabalho, tais como barrier, work_group_reduce, work_group_scan, etc.
- Utilização de funções de dispositivo OpenCL, como get_num_groups, get_global_size, get_local_size, etc.
Depuração
- Compreender os erros e bugs comuns em programas OpenCL
- Utilizar o Visual Studio Code debugger 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
- Usando o Intel VTune para depurar e analisar programas OpenCL em dispositivos Intel
- Usando o NVIDIA Nsight para depurar e analisar programas OpenCL em dispositivos NVIDIA
Otimização
- Entendendo os fatores que afetam o desempenho dos programas OpenCL
- Usar tipos de dados vetoriais OpenCL e técnicas de vetorização para melhorar o rendimento aritmético
- Usar técnicas de desenrolamento e de ladrilhamento de loops OpenCL para reduzir a sobrecarga de controlo e aumentar a localidade
- Utilização de OpenCL memória local e funções de memória local para otimizar os acessos à memória e a largura de banda
- Usando OpenCL ferramentas de criação de perfil e de criação de perfil para medir e melhorar o tempo de execução e a utilização de recursos
Resumo e próximos passos
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
- Programadores que pretendam aprender a utilizar OpenCL para programar dispositivos heterogéneos e explorar o seu paralelismo
- Programadores 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 seu 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