[论文解读] SpArch: Efficient Architecture for Sparse Matrix Multiplication
SpArch 是一种领域专用加速器,通过基于流的合并器、压缩矩阵表示、Huffman 树调度器和行预取器,联合优化稀疏矩阵-矩阵乘法(SpGEMM)中的输入和输出数据重用。它将 DRAM 访问减少 2.8 倍,在 20 个真实世界基准测试中,相较于最先进平台,最高实现 1285 倍加速和 62 倍能效提升。
Generalized Sparse Matrix-Matrix Multiplication (SpGEMM) is a ubiquitous task in various engineering and scientific applications. However, inner product based SpGENN introduces redundant input fetches for mismatched nonzero operands, while outer product based approach suffers from poor output locality due to numerous partial product matrices. Inefficiency in the reuse of either inputs or outputs data leads to extensive and expensive DRAM access. To address this problem, this paper proposes an efficient sparse matrix multiplication accelerator architecture, SpArch, which jointly optimizes the data locality for both input and output matrices. We first design a highly parallelized streaming-based merger to pipeline the multiply and merge stage of partial matrices so that partial matrices are merged on chip immediately after produced. We then propose a condensed matrix representation that reduces the number of partial matrices by three orders of magnitude and thus reduces DRAM access by 5.4x. We further develop a Huffman tree scheduler to improve the scalability of the merger for larger sparse matrices, which reduces the DRAM access by another 1.8x. We also resolve the increased input matrix read induced by the new representation using a row prefetcher with near-optimal buffer replacement policy, further reducing the DRAM access by 1.5x. Evaluated on 20 benchmarks, SpArch reduces the total DRAM access by 2.8x over previous state-of-the-art. On average, SpArch achieves 4x, 19x, 18x, 17x, 1285x speedup and 6x, 164x, 435x, 307x, 62x energy savings over OuterSPACE, MKL, cuSPARSE, CUSP, and ARM Armadillo, respectively.
研究动机与目标
- 解决稀疏矩阵中不规则访问模式和数据局部性差导致的 SpGEMM 内存墙问题。
- 克服基于外积的 SpGEMM 的局限性,后者因在 DRAM 中过度存储部分矩阵而导致输出重用性差。
- 联合优化输入和输出数据重用,以减少 DRAM 带宽并提升性能和能效。
- 设计一种可扩展的、硬件优化的架构,支持大规模稀疏矩阵,且内存开销最小。
提出的方法
- 提出一种基于流的、高度并行化的合并器,将乘法和合并阶段流水线化,实现在生成后立即在片上合并部分矩阵。
- 提出一种压缩矩阵表示,重新组织第一个输入矩阵,将非零元素聚集成更密集的列,将部分矩阵数量减少三个数量级。
- 设计一种 Huffman 树调度器,以确定最优的合并顺序,优先合并稀疏性更高的部分矩阵,从而最小化总 DRAM 访问量。
- 实现一种行预取器,采用近似最优的缓冲区替换策略,以减少因压缩表示带来的输入矩阵读取流量。
- 将所有组件集成到统一的领域专用架构(SpArch)中,实现 SpGEMM 工作负载的高吞吐量和低内存带宽。
- 对第二个矩阵使用 CSR 格式,对第一个矩阵使用压缩列访问,以支持高效流式处理和片上数据重用。
实验结果
研究问题
- RQ1如何在基于外积的 SpGEMM 中联合优化输入和输出数据重用,以减少 DRAM 带宽?
- RQ2何种表示和调度策略能最小化大规模 SpGEMM 中的部分矩阵存储和 DRAM 访问?
- RQ3具有流水线化乘法-合并功能的流式合并器能否有效缓解 SpGEMM 加速器中的内存瓶颈?
- RQ4压缩矩阵表示在不增加输入访问的前提下,能否有效减少部分矩阵数量?
- RQ5基于 Huffman 树的调度器对不同稀疏度矩阵的 SpGEMM 可扩展性和内存访问有何影响?
主要发现
- SpArch 在 20 个真实世界基准测试中,相较于前代最先进方案,总 DRAM 访问量减少 2.8 倍。
- 该架构在 ARM Armadillo 上最高实现 1285 倍加速,在 MKL 上平均实现 19 倍加速。
- 压缩矩阵表示将部分矩阵数量减少三个数量级,使 DRAM 访问量减少 5.4 倍。
- Huffman 树调度器通过最小化部分合并结果的中间存储,进一步将 DRAM 访问量减少 1.8 倍。
- 行预取器将输入读取流量减少 1.5 倍,实现了对压缩矩阵访问模式的近似最优缓冲区替换。
- SpArch 在测试工作负载下,相较 OuterSPACE 实现 6 倍能效提升,相较 CUSP 最高实现 435 倍能效提升。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。