kirilleizeman / hls_tutorial_examples

Examples shown as part of the tutorial "Productive parallel programming on FPGA with high-level synthesis".

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Updated for SC'19 in Denver, CO.

Content

These are examples used in the tutorial Productive Parallel Programming on FPGA with High-Level Synthesis, given at PPoPP'18, SC'18, SC'19, and HiPEAC'20.

For comprehensive coverage of HLS transformations for HPC, we refer to our work Transformations of High-Level Synthesis Codes for High-Performance Computing, available on arXiv [1].

Dependencies

These examples depend on hlslib as a submodule [2]. Make sure you clone with the --recursive flag, or run git submodule update --init after cloning.

All examples use CMake to configure and build both Xilinx and Intel kernels. The configuration relies on scripts to find the Xilinx and/or Intel tools on your system by looking for the xocc and aoc binaries, respectively. To ensure that the tools are found, make sure these are on your PATH.

Building and running

To build the examples, create a build folder and configure it using CMake:

mkdir build
cd build
cmake ..

Depending on your installation of the Intel FPGA tools, you might have to specify a board package available to your installation, e.g., -DINTEL_FPGA_BOARD=p520_hpc_sg280l, to build the Intel emulation kernels.

Each example has one or more synthesis targets (we recommend using a shell that can autocomplete GNU make targets). For example, from your build directory:

cd example_0
make synthesize_example0

Each Xilinx synthesis target will also copy a report.rpt-file into the build directory, which you can inspect to get more detailed information about the resulting architecture.

Intel synthesis targets are suffixed with _intel, and are not available for all examples. Reports are generated in a subdirectory named after the kernel, e.g., Example2/reports.

References

  • [1] de Fine Licht, Johannes, and Besta, Maciej, and Meierhans, Simon, and Hoefler, Torsten. "Transformations of High-Level Synthesis Codes for High-Performance Computing". arXiv preprint arXiv:1805.08288 (2019).
  • [2] de Fine Licht, Johannes, and Hoefler, Torsten. "hlslib: Software Engineering for Hardware Design". arXiv preprint arXiv:1910.04436 (2019).

About

Examples shown as part of the tutorial "Productive parallel programming on FPGA with high-level synthesis".

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 69.9%Language:CMake 18.3%Language:C 11.8%