Skip to content

Serpens is an HBM FPGA accelerator for SpMV

License

Notifications You must be signed in to change notification settings

UCLA-VAST/Serpens

 
 

Repository files navigation

DOI

Serpens

Serpens is an HBM FPGA accelerator for SpMV.

Dependencies:

  1. TAPA + Autobridge
  • Following Install TAPA to install TAPA(Autobridge) and Gurobi.
  • Vitis 2021.2
  • Xilinx xilinx_u280_xdma_201920_3 shell and a Xilinx U280 FPGA card.

Input matrix format & sample input

The host code takes martrix market format(https://math.nist.gov/MatrixMarket/formats.html). We test on sparse matrices from SuiteSparse(https://sparse.tamu.edu) collection. To download a sample matrix for running, do

mkdir matrices
sh download_example.sh
cmake ..
make swsim

To do software emulation:

mkdir build
cd build
cmake ..
make swsim

To run HLS:

cd build
cp ../run_tapa.sh ./
sh run_tapa.sh

After HLS, a bitstream generator file Serpens_generate_bitstream.sh is generated under the build folder.

To generate bitstream (hardware):

sh Serpens_generate_bitstream.sh

To run the accelerator on board:

We provide the generated bitstream. If you have a U280 FPGA ready, you don't need to generate the hwardware again, just run

TAPAB=../bitstream_a16/Serpens_xilinx_u280_xdma_201920_3.xclbin ./serpens ../matrices/nasa4704/nasa4704.mtx

To learn more about the techinqual details, please see this link.

If you find this code useful, please cite:

@inproceedings{song2022serpens,
    author = {Linghao Song and Yuze Chi and Licheng Guo and Jason Cong},
    title = {Serpens: A High Bandwidth Memory Based Accelerator for General-Purpose Sparse Matrix-Vector Multiplication},
    booktitle={Proceedings of the 59th ACM/IEEE Design Automation Conference},
    pages={211--216},
    year = {2022}
}

About

Serpens is an HBM FPGA accelerator for SpMV

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Tcl 42.7%
  • C++ 40.8%
  • C 13.1%
  • CMake 1.8%
  • Shell 1.6%