HLS optimizations

This module shows the possibilities for code optimization when using High-Level Synthesis Tools on FPGAs. Optimizations are applied and demonstrated to the OmpSs@FPGA Matrix Multiplication example, showing how it achives programmer’s productivity.

More specifically, the module provides insights into:

  • the basic optimizations made by the HLS tools

  • the porting and tuning of matrix multiplication towards FPGAs

  • improving the data transfers based on the use of the wide port

  • the so called reverse offloading, to submit tasks from the FPGA to the host pr ocessor

  • additional advanced optimizations, e.g., task creation and blocking inside the FPGA

Prerequisites

  • Good knowledge of C/C++

  • Basic knowledge of acceleration architectures and offloading models

  • Basic knowledge of Paraver/Extrae

  • Basic knowledge on FPGAs and OmpSs@FPGA programming model

Learning outcomes

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

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

  • the basic optimizations made by the HLS tools

  • the porting and tuning of matrix multiplication towards FPGAs

  • improving the data transfers based on the use of the wide port

  • the so called reverse offloading, to submit tasks from the FPGA to the host pr ocessor

  • additional advanced optimizations, e.g., task creation and blocking inside the FPGA

  • apply basic optimizations like loop unrolling, pipelining and array partitioning on FPGAs using HLS.

  • annotate and optimize the matrix multiplication algorithm on FPGAs.

  • improve the use of resources and data transfers on the FPGA device.

  • use the optimized implementation of the runtime system on the FPGA, with hardware accelerated task creation and data blocking.

Suggested dedication

This module is thought to be taught on around 4 hours of guided or self-taken teaching.

License and attribution

This course names Daniel Jimenez-Gonzalez, Antonio Filgueras, Miquel Vidal, Carlos Alvarez, and Xavier Martorell as contributors. Teaching material is shared under CC BY-SA 4.0; see the repository LICENSE. Code uses the MIT license; see LICENSE.code.