MC-SD03-V
Introdução à programação com FPGA em sistemas distribuídos

Professor: Pedro Henrique di Francia Rosso (UNICAMP)

Horarios: Terça 30/01 de 14:00h às 18:00h

Resumo: O objetivo deste curso é apresentar os conceitos básicos de programação para FPGAs e como aplicá-los em sistemas distribuídos. FPGAs são aceleradores que possuem circuitos integrados compostos de blocos lógicos, blocos de entrada e saída, registros, memórias e chaves seletores para interconexões que definem conexões entre os blocos lógicos e de entrada e saída. O código-fonte dos programas utilizados no curso e todo o material estão disponíveis no repositório https://gitlab.com/ompcluster/conferences/sdumont-24. Neste curso, daremos foco ao ambiente de FPGAs da AMD (Xilinx), abordaremos de forma introdutória os conceitos sobre como desenvolver e executar kernels em FPGAs conforme a documentação oficial (HLS e XRT), e também conceitos de execução de aplicações aceleradas por FPGA em sistemas distribuídos. Também apresentaremos de forma introdutória opções de execução de aplicações aceleradas por FPGAs usando OpenMP, através do modelo de programação OpenMP Cluster (OMPC), mostraremos uma forma alternativa e mais simples de acelerar aplicações em sistemas distribuídos usando FPGAs. Assumimos que o usuário possui compreensão geral sobre programação com a linguagem C/C++ e em sistemas distribuídos (Message Passing Interface - MPI). Durante o curso, serão apresentados exemplos em linguagem C, possivelmente com alguns exercícios sendo propostos aos participantes.

Objetivo:

Ementa:
  1. Introdução
  2. Conceitos gerais sobre FPGAs
  3. Desenvolvimento de kernels para FPGAs
  4. High-Level Synthesis (HLS)
  5. Controlando aplicações aceleradas por FPGAs
  6. Aplicação de soma de vetores acelerada por FPGAs.
  7. Aplicação de soma de vetores acelerada por FPGAs distribuída.
  8. Conceitos básicos sobre MPI
  9. Conceitos básicos sobre OpenMP
  10. OpenMP Cluster (OMPC)
  11. OMPC para FPGAs
  12. Aplicação de soma de vetores acelerada por FPGAs usando OMPC.
  13. Aplicação de soma de vetores acelerada por FPGAs usando OMPC distribuída.
  14. Aplicação de multiplicação de matrizes usando FPGAs.

Bibliografia:
  1. XRT: https://www.xilinx.com/products/design-tools/vitis/xrt.html
  2. HLS: https://docs.xilinx.com/r/en-US/ug1399-vitis-hls
  3. AMD Tutorials: https://docs.xilinx.com/r/en-US/Vitis-Tutorials-Getting-Started/Vitis-HLS
  4. OMPC: YVIQUEL, Hervé et al. The OpenMP Cluster Programming Model. In: Workshop Proceedings of the 51st International Conference on Parallel Processing. 2022. p. 1-11.