Sessão 1: Introdução à Computação Paralela e Configuração do Ambiente (11 Novembro)
- Visão geral do SYCL: Um modelo de programação C++ de alto nível para plataformas heterogéneas.
- Pequena introdução ao C++
- Configuração do Ambiente de programação
Sessão 2: Descoberta de Dispositivos no SYCL (15 Novembro)
- Consulta de informações sobre dispositivos usando get_info
- Utilização de seletores de dispositivos padrão e personalizados
- Técnicas de descoberta de dispositivos para portabilidade de código
- Utilização de aspectos para consultar características dos dispositivos
Sessão 3: Filas, Grupos de Comando e Kernels (18 Novembro)
- Organização do trabalho em aplicações SYCL
- Compreensão de filas, grupos de comando e gráficos de tarefas
- Ações: Single task, parallel for, parallel for work group
- Operações de memória: copy, update host, fill
- Sincronização e dependências com eventos e wait()
Sessão 4: Gestão de Dados com Buffers, Acessores e Memória Partilhada Unificada no SYCL (22 Novembro)
- Buffers: Criação, inicialização e gestão de ciclo de vida
- Acessors: Acessar dados dos buffers em kernels
- Movimento de dados implícito e explícito entre host e dispositivo
- Acessors de host para dados de buffers
- Memória Partilhada Unificada (USM): Gestão de memória baseada em ponteiros
- Comparação entre o modelo de buffer-acessor e USM
Sessão 5: Expressão de Paralelismo com SYCL: Kernels Básicos de Dados-Paralelos (25 Novembro)
- Compreensão de conceito de work-items, work-groups e ND-ranges
- Kernels básicos: parallel for
- Kernels: ND-range
- Multiplicação de matrizes: Abordagem básica e otimizada
Sessão 6: Projeto Final (29 Novembro)
- Desenvolvimento de um projeto final em grupo.