Professor: Amanda Sabatini Dufek (LLNL) e Douglas Adriano Augusto (Fiocruz)
Horarios: Quinta 01/02 de 14:00h às 18:00h
Resumo: O SYCL é um modelo de programação paralela heterogênea baseado em C++ moderno e OpenCL. Os códigos implementados em SYCL seguem estritamente a sintaxe C++ e são compatíveis, sem modificação, com virtualmente todos os tipos de processadores (CPUs) e aceleradores (GPUs, FPGAs, etc.).
O SYCL une a vantagem da implementação incremental do paralelismo em códigos C++ sequenciais com o desempenho de linguagens de mais baixo nível, como o OpenCL e CUDA, resultando em códigos bem mais enxutos. Além disso, o SYCL é um padrão com especificação aberta, gerido pelo grupo Khronos, onde diversas entidades envolvidas com computação de alto desempenho participam conjuntamente no seu desenvolvimento.
O curso abordará inicialmente os principais conceitos do SYCL e apresentará alguns exemplos bastante simples que ilustram o uso da linguagem. Em seguida, traremos exemplos mais complexos juntamente com alguns conceitos avançados e práticas recomendadas para otimização de desempenho. Uma breve introdução ao uso da ferramenta SYCLomatic, que possibilita a migração automática de códigos CUDA para SYCL, também será oferecida no curso.
Objetivo: Ementa:
- Introdução
- Filas de comando e dispositivos
- Unified Shared Memory explícita
- Unified Shared Memory implícita
- Kernels: forma básica
- Sincronismo no hospedeiro
- Plataformas e dispositivos
- Buffers e accessors
- Kernels: forma ND-Range
- Barreiras
- Local accessors
- SYCLomatic
Bibliografia:
- Data Parallel C++: Programming Accelerated Systems Using C++ and SYCL (2023), Reinders, J., Ashbaugh, B., Brodman, J., Kinsner, M., Pennycook, J., Tian, X.
- SYCL Overview - The Khronos Group Inc, https://www.khronos.org/sycl