OmpSs@FPGA

This module introduces the audience to the BSC tools for heterogenous programming on FPGA devices. It describes the FPGA architecture and OmpSs@FPGA, as a productive programming environment for compute systems with FPGAs.

More specifically, the module provides insights into:

  • the high-level blocks that build up FPGAs, and how they can be used for computation.

  • the OmpSs@FPGA programming model, how to write, compile and execute applications on FPGAs

  • how to analyze applications to determine which portions can be executed on FPGAs, and use OmpSs@FPGA to parallelize/optimize them.

Prerequisites

  • Good knowledge of C/C++

  • Basic knowledge of acceleration architectures and offloading models

  • Basic knowledge of Paraver/Extrae

Learning outcomes

The material in this EVITA module is for all researchers and engineers who work with FPGAs to accelerate applications using BSC’s OmpSs@FPGA programming model.

By the end of this module, learners should be able to:

  • describe the architecture of FPGA devices and how their components can be used

  • describe the characteristics of the OmpSs@FPGA programming model

  • annotate applications with OmpSs@FPGA directives to accelerate applications on FPGAs

  • describe how to annotate the matrix multiplication algorithm for tasks exploitation on FPGAs

Suggested dedication

This module is thought to be taught on around 3 hours. Episode “Introduction to FPGA Hardware” can take around 1 hour and episode “Introduction to OmpSs@FPGA” around 2 hours of teaching / online learning.

License

Note

To module authors: For code you may use any OSI-approved license as mentioned in https://spdx.org/licenses/, such as Apache License 2.0, GNU GPLv3, MIT. Please make sure to update the deed above and LICENSE.code file accordingly.