这里简单介绍一下我们的工作 Uni-STC: Unified Sparse Tensor Core。这篇论文被 HPCA 2026 接收,主要讨论如何用一套统一的 Sparse Tensor Core 架构支持多类核心稀疏计算内核。

我们在这项工作里关注的问题是:当越来越多应用开始依赖稀疏计算时,硬件能不能不只为某一个稀疏算子做专用优化,而是用一套相对统一的结构同时服务多类核心稀疏内核?具体来说,Uni-STC 尝试在同一套 Sparse Tensor Core 架构中支持 SpMV、SpMSpV、SpMM 和 SpGEMM。
论文信息
- Title: Uni-STC: Unified Sparse Tensor Core
- Authors: Haocheng Lian, Qiyue Zhang, Xinran Zhao, Meichen Dong, Yijie Nie, Zhengyi Zhao, Junzhong Shen, Wei Guo, Chun Huang, Bingcai Sui, Weifeng Liu
- Venue: 32nd IEEE International Symposium on High-Performance Computer Architecture (HPCA '26)
- Year: 2026
- Links: PDF / Slides / DOI / BibTeX / Code
为什么想做这件事
稀疏计算的困难并不只在于“非零元素少”。更麻烦的是,非零元素的位置不规则,索引访问会带来额外开销,中间结果的形态也常常不可预测。我们最初讨论这个问题时,一个反复出现的感觉是:很多稀疏加速器在某一类模式上可以做得很好,但当算子、输入稀疏模式或输出形态发生变化时,硬件资源就不一定还能被充分利用。
所以我们希望尝试一种稍微“冒险”的路线:不是只为某一个 kernel 设计最优路径,而是先问这些稀疏算子之间有没有可以共享的执行结构。这个问题并不容易,因为统一往往意味着折中。我们在论文里尝试说明的是,如果数据格式、任务划分和片上数据流一起设计,这种折中并不一定会变成明显的性能牺牲。
BBC:我们尝试使用的统一表达
为了承接不同稀疏算子的输入,我们提出了 BBC(Bitmap-Bitmap-CSR) 格式。它不是一个单纯追求压缩率的格式,而是和 Uni-STC 的数据流一起设计的中间表达:一方面用 bitmap 描述 tile 内部的局部稀疏结构,另一方面用 CSR 保留跨 tile 的索引组织。
这里我们想解决的核心问题是让硬件更容易知道“哪些数据需要被拿来算、它们应该和谁匹配、结果应该流向哪里”。这听起来像是格式问题,但实际做下来会牵连到片上缓存、调度粒度、归约方式和互连网络。BBC 只是其中一环,不过它帮助我们把几类算子的输入组织到更接近统一的数据流里。
架构上的几个设计点
细粒度任务划分。 稀疏矩阵的负载很不均匀,如果任务粒度太粗,就很容易出现一部分计算单元忙、一部分计算单元空转的情况。Uni-STC 采用更细粒度的任务划分,希望尽量提高阵列利用率。
并行 sparse-tile 处理。 我们把 sparse tile 作为重要的执行单元来组织数据复用。这个设计的目标并不是让所有情况都完美,而是尽可能让常见稀疏模式中的局部性被硬件捕捉到。
动态网络。 对稀疏算子来说,中间结果的移动和归约经常比乘加本身更难处理。Uni-STC 中的动态网络主要服务于这部分数据流组织,尽量减少不必要的数据搬运,让中间结果在片上以更合适的方式汇聚。
实验结果
我们在 2893 个 SuiteSparse 矩阵 和 302 个 DLMC 矩阵 上做了评估。相较于 RM-STC,Uni-STC 取得了 2.21× 的几何平均加速和 2.96× 的能效提升。论文中也包含了针对不同 kernel、不同矩阵集合以及应用场景的进一步分析。
当然,这些数字并不意味着这个方向已经被完全解决。稀疏计算的输入分布非常复杂,任何一个架构设计都很难覆盖所有场景。我们更希望这篇工作能提供一个可讨论的思路:在稀疏 Tensor Core 的设计中,统一性本身也可以成为一种优化目标,而不只是工程上的妥协。
代码和复现
我们也开源了 artifact,仓库中包含 Docker 环境以及 Python、Bash、C++ 组成的模拟和评估脚本。快速验证流程大约需要 5 小时,完整实验大约需要 75 小时。仓库里还整理了格式开销、性能比较、AMG solver 和 Energy Efficiency Density 等实验入口。
如果你对这篇工作感兴趣,除了直接读论文,也可以先从 artifact 里跑一小部分实验,再回来看 BBC 格式和架构数据流。对我自己来说,很多设计上的取舍也是在反复看实验结果、看数据搬运路径的时候才慢慢变清楚的。
最后
这项工作能完成,离不开所有合作者的讨论、实现、实验和修改。论文里呈现的是一个相对完整的系统设计,但背后其实有很多试错和不够优雅的中间版本。现在回头看,Uni-STC 对我最大的意义并不是某一个具体数字,而是让我更深地理解了稀疏计算里“格式、数据流和硬件结构必须一起考虑”这件事。
如果这篇论文能让更多人关注通用稀疏计算硬件,或者给后续 Sparse Tensor Core 的设计带来一点可复用的经验,那就已经是我们非常期待的结果了。
评论