Skip to content

Repository files navigation

Procyon: Promoting Fine-Grain Multi-Tenancy to Optimize Sparse Streaming Accelerators

Paper: Procyon: Promoting Fine-Grain Multi-Tenancy to Optimize Sparse Streaming Accelerators (DAC 2026)

Procyon Architecture

Procyon is a host-side scheduling framework that enables multi-tenant Sparse Matrix-Vector Multiplication (SpMV) on FPGA accelerators. It interleaves the edge lists of multiple sparse workloads into a single batched schedule, filling hardware stalls introduced by one workload with useful computation from another—improving both resource utilization and overall throughput.

This repository contains:

File Description
procyon_host.cpp Unified host driver: runs Serpens, Chason, and Procyon schedulers and prints performance summary
procyon_for_serpens_kernel.cpp HLS kernel implementing the architectural extensions required for Serpens hardware modes
procyon_for_chason_kernel.cpp Coming Soon !!!
multi_tenancy.h Procyon scheduling code and relevant functions
crhcs.h Chason (Cross-HBM-Channel Scheduling, CrHCS) baseline
procyon.h TAPA/HLS kernel interface and hardware constants
sparse_helper.h Sparse matrix utilities (CSC/CSR conversion, PE-aware OoO edge-list generation)
mmio.h Matrix Market I/O
run.sh Build script (compiles host binary with TAPA)
rtl.sh RTL synthesis script (TAPA → Vitis HLS → xclbin)
exe.sh Example run script with the bundled matrices
matrices/ Sample sparse matrices in Matrix Market format
out/ Output directory for logs

Background

Two state-of-the-art FPGA SpMV accelerators serve as baselines:

  • Serpens (DAC'22) uses PE-aware Out-of-Order (OoO) scheduling to reduce memory stalls.
  • Chasoň (MICRO'25) uses Cross-HBM-Channel Scheduling (CrHCS) that redistributes non-zeros across HBM channels for better load balance.

Procyon sits on top of both: it takes the per-PE edge lists produced by either baseline and merges multiple workloads by filling stall slots of one matrix with non-zero computations from another. The result is a single, denser schedule that amortises overheads across all batched requests.


Dependencies

Dependency Version tested
TAPA ≥ 0.1
Xilinx Vitis / XRT 2022.1+
GCC / Clang with C++17 GCC 9+
OpenCL Runtime provided by XRT

Build

bash run.sh

This produces an executable named procyon.


Run (simulation mode, no FPGA required)

bash exe.sh

or manually:

./procyon  matrices/eris1176.mtx  matrices/bcsstk23.mtx  matrices/gemat12.mtx \
           matrices/blckhole.mtx  matrices/bcspwr08.mtx  matrices/G55.mtx

The program will print:

  1. Per-workload statistics for Serpens (PE-aware OoO).
  2. Per-workload statistics for Chasoň (CrHCS).
  3. Per-batch statistics for Procyon multi-tenancy.
  4. A final summary table showing schedule-length reduction and estimated FPGA kernel time, including speedup of Procyon over both baselines.

Hardware execution

After synthesising the bitstream with bash rtl.sh, export the path and re-run:

export TAPAB=build/Serpens_xilinx_u55c_gen3x16_xdma_3_202210_1.xclbin
./procyon  matrices/eris1176.mtx  matrices/bcsstk23.mtx  ...

Example output (simulation mode)

====================================================================
  Procyon  -  Multi-Tenancy SpMV Scheduling Framework
  Baselines: Serpens (PE-aware OoO)  |  Chasoň (CrHCS)
====================================================================

--- Baseline 1: Serpens  (PE-aware OoO scheduling) ---
  [matrices/eris1176.mtx]  NNZ=18552  Stalls=194568  TotalLen=213120  RU=91.29%
  ...

--- Baseline 2: Chason  (Cross-HBM-Channel CrHCS scheduling) ---
  [matrices/eris1176.mtx]  NNZ=18552  Stalls=14216   TotalLen=32768   RU=43.38%
  ...

--- Procyon (on Serpens output) ---
  Batch #1  NNZ=...  Stalls=...  TotalLen=...  RU=...%
  ...

--- Procyon (on Chason output) ---
  Batch #1  NNZ=...  Stalls=...  TotalLen=...  RU=...%
  ...

====================================================================
  SUMMARY
====================================================================
  Serpens   total schedule length       : 473088
  Procyon (on Serpens) schedule length  : 155008
  Improvement over Serpens              : 318080 cycles  (3.05x)

  Chason    total schedule length       : 180224
  Procyon (on Chason)  schedule length  : 155008
  Improvement over Chason               : 25216 cycles  (1.16x)
====================================================================

Citation

If you use Procyon in your research, please cite:

@inproceedings{bakhtiar2026procyon,
  title={Procyon: Promoting Fine-Grained Multi-Tenancy to Optimize Sparse Streaming Accelerators},
  author={Bakhtiar, Ubaid and Sha, Jeremy and and Hosseini, Helya and Asgari, Bahar},
  booktitle={Proceedings of the 63rd ACM/IEEE Design Automation Conference (DAC)},
  year={2026}
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages