[README] Update project description

This commit is contained in:
Hanchen Ye 2021-11-09 16:47:56 -06:00
parent aaf11f432d
commit d8d0fdf22a
1 changed files with 7 additions and 6 deletions

View File

@ -1,8 +1,10 @@
# ScaleHLS Project
High-level Synthesis (HLS) has been widely adopted as it significantly improves the hardware design productivity and enables efficient design space exploration (DSE). HLS tools can be used to deliver solutions for many different kinds of design problems, which are often better solved with different levels of abstraction. While existing HLS tools are built using compiler infrastructures largely based on a single-level abstraction (e.g., LLVM), we propose ScaleHLS, a next-generation HLS compilation flow, on top of a multi-level compiler infrastructure called MLIR, for the first time. By using an intermediate representation (IR) that can be better tuned to particular algorithms at different representation levels, we are able to build this new HLS tool that is more scalable and customizable towards various applications coming with intrinsic structural or functional hierarchies. ScaleHLS is able to represent and optimize HLS designs at multiple levels of abstraction and provides an HLS-dedicated transform and analysis library to solve the optimization problems at the suitable representation levels. On top of the library, we also build an automated DSE engine to explore the multi-dimensional design space efficiently. In addition, we develop an HLS C front-end and a C/C++ emission back-end to translate HLS designs into/from MLIR for enabling the end-to-end ScaleHLS flow. Experimental results show that, comparing to the baseline designs only optimized by Xilinx Vivado HLS, ScaleHLS improves the performances with amazing quality-of-results -- up to 768.1x better on computation kernel level programs and up to 3825.0x better on neural network models.
ScaleHLS is a High-level Synthesis (HLS) framework on [MLIR](https://mlir.llvm.org). ScaleHLS can compile HLS C/C++ or ONNX model to optimized HLS C/C++ in order to generate high-efficiency RTL design using downstream tools, such as Vivado HLS.
Please check out our [HPCA'22 paper](https://arxiv.org/abs/2107.11673) for more details.
By using the MLIR framework that can be better tuned to particular algorithms at different representation levels, ScaleHLS is more scalable and customizable towards various applications coming with intrinsic structural or functional hierarchies. ScaleHLS represents HLS designs at multiple levels of abstraction and provides an HLS-dedicated analysis and transform library (in both C++ and Python) to solve the optimization problems at the suitable representation levels. Using this library, we've developed a design space exploration engine to generate optimized HLS designs automatically.
For more details, please see our [HPCA'22 paper](https://arxiv.org/abs/2107.11673).
## Quick Start
@ -25,7 +27,7 @@ Then, run the following script to build ScaleHLS. Note that you can use `-j xx`
$ ./build-scalehls.sh
```
After the building, we suggest to export the following paths.
After the build, we suggest to export the following paths.
```sh
$ export PATH=$PATH:$PWD/build/bin:$PWD/polygeist/build/mlir-clang
$ export PYTHONPATH=$PYTHONPATH:$PWD/build/tools/scalehls/python_packages/scalehls_core
@ -39,7 +41,7 @@ $ mlir-clang samples/polybench/gemm/gemm_32.c -function=gemm_32 -memref-fullrank
&& scalehls-translate -emit-hlscpp gemm_32_pareto_0.mlir > gemm_32_pareto_0.cpp
```
Meanwhile, we provide a `pyscalehls` tool to showcase the `scalehls` Python package:
Meanwhile, we provide a `pyscalehls` tool to showcase the `scalehls` Python library:
```sh
$ pyscalehls.py samples/polybench/syrk/syrk_32.c -f syrk_32
```
@ -76,6 +78,5 @@ $ scalehls-opt resnet18.mlir -allow-unregistered-dialect -legalize-onnx \
Please refer to the `samples/onnx-mlir` folder for more test cases, and `sample/onnx-mlir/ablation_int_test.sh` for how to conduct the graph, loop, and directive optimizations.
## References
- [MLIR](https://mlir.llvm.org): Multi-Level Intermediate Representation
- [ONNX-MLIR](https://github.com/onnx/onnx-mlir): The Open Neural Network Exchange implementation in MLIR
- [CIRCT](https://github.com/llvm/circt): Circuit IR Compilers and Tools
- [CIRCT-HLS](https://github.com/circt-hls/circt-hls): A HLS flow around CIRCT project