sampsyo / cs6120

advanced compilers
https://www.cs.cornell.edu/courses/cs6120/2023fa/
MIT License
709 stars 157 forks source link

Project Proposal: Frontend Integration for AMC #400

Open matth2k opened 9 months ago

matth2k commented 9 months ago

Frontend Integration for AMC (Accelerator Memory Compiler) - Matt Hofmann and Yixiao Du

Background

Our research area is in accelerator design, HLS (high-level synthesis), and FPGA CAD tools in general. For our course project, we want to continue developing and evaluating our own open-source HLS tool flow as an alternative to commercial EDA tools. Here is a list of existing components belonging to our proposed flow:

What will you do?

We will be integrating the Allo framework as a frontend to our own accelerator tool flow. Over the past year, our intermediate representation and compiler for embedded memory has matured, and we would like to leverage from a higher-level design language. In the end, we want to evaluate our project against other established high-level synthesis tools, like Vitis HLS.

To give an example, we would like to design both sparse and dense kernels in the Allo frontend, lower their descriptions to AMC memory structures, and finally compile the programs through the AMC and Calyx backend. Then, we can evaluate PPA (power, performance, area) on varying designpoints leveraging different memory subsystem customizations.

How will you do it?

Allo's APIs already emit a combination of MLIR dialects (SCF, Affine, Arith, Memref). We will augment these APIs to also emit AMC IR. However, AMC fundamentally follows a different programming paradigm, because it actually details an entire memory micro-architecture. Hence, much of Allo's memory customizations will need to be rewritten.

How will you empirically measure success?

These are the metrics we hope to show improvements on compared to C-based HLS:

Team members: @matth2k @yxd97

sampsyo commented 9 months ago

Sounds awesome. This will be great!

Is there an existing suite of Allo benchmarks (or stuff you can port over from old HeteroCL benchmarks) that you can use to drive the evaluation?

yxd97 commented 8 months ago

Yes. We asked the current developers of Allo; they currently have a benchmark suite built from Polybench. There is also a Machsuite benchmark coming soon which provides some sparse linear algebra applications that are memory-intensive.

sampsyo commented 8 months ago

Excellent!