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
Episodes
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.