This repository contains examples of hierarchical tiling and explicit double buffering for GEMM and Conv2D, implemented using:
- DaCe for data-centric program representation
- Google OR-Tools (CP-SAT) for constraint-based tile-size selection
The tiling solver models a three-level memory hierarchy (L1 / L2 / L3) and supports optional double buffering at L1 and L2 levels.
-
generic_tiling_solver.pyProvides -
gemm_tiling_solver.py
Constraint-based tiler for GEMM (L1/L2/L3 hierarchy) -
gemm_example.py
DaCe GEMM example using the tiler and explicit double buffering -
conv2d_tiling_solver.py
Constraint-based tiler for Conv2D (same approach as GEMM) -
conv2d_example.py
DaCe Conv2D example with hierarchical tiling and buffering
Python 3.9+ recommended.
Install required packages:
pip install dace ortools numpy