中文

JITSPMM:面向加速稀疏矩阵-矩阵乘法的即时指令生成

分布式、并行与集群计算 2023-12-12 v1 性能 编程语言

摘要

由于图神经网络(GNN)等应用中输入数据量庞大,实现高性能的稀疏矩阵-矩阵乘法(SpMM)受到了越来越多的研究关注,尤其是在多核 CPU 上。大多数现有的 SpMM 计算解决方案遵循提前编译(AOT)方法,即在程序执行前将其完全编译。SpMM 的 AOT 编译面临三个关键局限:不必要的内存访问、额外的分支开销和冗余指令。这些局限源于与 SpMM 相关的关键信息直到运行时才可知这一事实。在本文中,我们提出了 JITSPMM,这是一个即时(JIT)汇编代码生成框架,用于在具有 SIMD 扩展的多核 CPU 上加速 SpMM 计算。首先,JITSPMM 将 JIT 汇编代码生成技术集成到三种广泛使用的 SpMM 工作负载划分方法中,以实现 CPU 线程间的均衡工作负载分配。其次,借助运行时信息的可用性,JITSPMM 采用了一种新技术——粗粒度列合并,通过展开性能关键循环来最大化指令级并行性。此外,JITSPMM 智能分配寄存器以缓存频繁访问的数据从而最小化内存访问,并采用特定的 SIMD 指令以增强算术吞吐量。我们对 JITSPMM 进行了性能评估,并将其与两个 AOT 基准进行了比较。第一个基准涉及使用 Intel icc 编译器通过自动向量化编译的现有 SpMM 实现。第二个基准利用了 Intel MKL 提供的高度优化的 SpMM 例程。结果表明,JITSPMM 分别实现了平均 3.8 倍和 1.4 倍的性能提升。

关键词

引用

@article{arxiv.2312.05639,
  title  = {JITSPMM: Just-in-Time Instruction Generation for Accelerated Sparse Matrix-Matrix Multiplication},
  author = {Qiang Fu and Thomas B. Rolinger and H. Howie Huang},
  journal= {arXiv preprint arXiv:2312.05639},
  year   = {2023}
}