# hls_tutorial_examples **Repository Path**: lockheedmeng/hls_tutorial_examples ## Basic Information - **Project Name**: hls_tutorial_examples - **Description**: No description available - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-13 - **Last Updated**: 2021-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README _Updated for SC'20._ ### 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, HiPEAC'20, and SC'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](https://arxiv.org/abs/1805.08288) [1]. ### Dependencies These examples depend on [hlslib](https://github.com/definelicht/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: ```bash 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: ```bash 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](https://arxiv.org/abs/1805.08288) (2019). - [2] de Fine Licht, Johannes, and Hoefler, Torsten. _"hlslib: Software Engineering for Hardware Design"_. arXiv preprint [arXiv:1910.04436](https://arxiv.org/abs/1910.04436) (2019).