lirui-shanghaitech / memluv

An HLS-synthesizable Dynamic Memory Manager for FPGAs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MemLuv

An HLS-synthesizable Dynamic Memory Manager for FPGAs

The MemLuv library develops a dynamic memory manager (DMM) for effective resource utilization in many-accelerator architectures targeting to FPGA devices. The library is developed in C99-complient C language and it is fully synthesizable with the Xilinx Vivado High-Level-Synthesis (HLS) tool, so far.

The library is customizable so that it tradeoffs memory allocation timing overhead and FPGA resources, i.e. FFs, LUTs, DSP48s and BRAMs.

The library has been evaluated with a set of key accelerators from emerging application domains. MemLuv delivers significant gains in FPGA's accelerators density, i.e. 3.8 × , and application throughput up to 3.1 × and 21.4 × for shared and private memory accelerators.

For any questions/suggestions/bug reporting you may contact MemLuv's source code main author Dionysios Diamantopoulos at "dionisios.diamantopoulos@REMOVETHIS gmail.com" .

Compilation steps 🚧:

  1. Clone repo & create temporary directory for Cmake
git clone https://github.com/diamantopoulos/memluv.git memluv
Navigate to top-level directory, i.e. cd ~/<...>/memluv
mkdir build && cd build
  1. Compile source code
  • Create make-targets automatically with supplied CmakeLists. cmake ../
  • Compile hardware heaps make wrappers
  • Compile accelerators make accelerators
  1. Test MemLuv
  • Compile a testbench make test-accelerators
  • Analyze MemLuv's log report vim memluv_stats_heap-<id>.txt make pyplot
  1. Synthesize MemLuv with Xilinx Vivado HLS make vivado_accelerators

Publications

The Unixverse segfaults on Tue, 19 Jan 2038^e^3 03:14:07 +0000. Hurry up!

About

An HLS-synthesizable Dynamic Memory Manager for FPGAs

License:Apache License 2.0


Languages

Language:C 90.7%Language:Makefile 3.7%Language:CMake 2.2%Language:Python 1.7%Language:Tcl 1.4%Language:Gnuplot 0.3%Language:Shell 0.0%