MC-SD03-IV
SYCL Introdutório e Avançado

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:
  1. Introdução
  2. Filas de comando e dispositivos
  3. Unified Shared Memory explícita
  4. Unified Shared Memory implícita
  5. Kernels: forma básica
  6. Sincronismo no hospedeiro
  7. Plataformas e dispositivos
  8. Buffers e accessors
  9. Kernels: forma ND-Range
  10. Barreiras
  11. Local accessors
  12. SYCLomatic

Bibliografia:
  1. Data Parallel C++: Programming Accelerated Systems Using C++ and SYCL (2023), Reinders, J., Ashbaugh, B., Brodman, J., Kinsner, M., Pennycook, J., Tian, X.
  2. SYCL Overview - The Khronos Group Inc, https://www.khronos.org/sycl