本文由Constantino Gómez、Filippo Mantovani、Erich Focht和Marc Casas共同撰写,发表于2021年2月27日至3月3日举行的PPoPP ‘21会议。研究团队来自巴塞罗那超级计算中心(Barcelona Supercomputing Center)和NEC德国公司(NEC Deutschland GmbH)。该研究的主要目标是优化稀疏矩阵-向量乘法(Sparse Matrix-Vector Multiplication, SpMV)在长向量架构上的执行效率,特别是针对NEC Vector Engine等新兴长向量架构。
稀疏矩阵-向量乘法(SpMV)是高性能计算(HPC)中的核心操作,广泛应用于偏微分方程(PDE)求解、有限元分析、数据科学等领域。然而,SpMV的计算性能受到稀疏矩阵的不规则数据访问模式的限制,尤其是在长向量架构上,传统的SpMV实现往往无法充分利用硬件的并行计算能力。因此,开发新的优化技术以提高SpMV在长向量架构上的性能至关重要。
本文提出了一系列针对长向量架构的SpMV优化技术,主要基于Sell-C-σ稀疏矩阵格式。Sell-C-σ是一种针对向量架构优化的稀疏矩阵存储格式,通过行排序和列分块来提高数据局部性。研究团队在此基础上提出了以下优化: 1. 排序策略:使用基数排序算法对矩阵行进行排序,以减少预处理开销。 2. 任务并行化:通过OpenMP任务并行化技术,动态调度任务以提高并行计算效率。 3. 列分块:将矩阵按列分块,以提高向量x的局部性。 4. 长向量架构优化:包括缓存分配策略、存储依赖松弛、流控制优化、循环展开和高效的Gather/Scatter地址计算。
研究团队在NEC SX-Aurora Vector Engine上对24个不同稀疏矩阵进行了实验,结果显示,通过结合上述优化技术,SpMV的平均性能提升了12%,峰值内存带宽利用率达到78%。与现有的多核CPU和GPU实现相比,本文提出的优化方法在性能上分别提升了3.02倍和1.72倍,平均SpMV效率达到峰值性能的4.19%。
本文的研究表明,长向量架构在处理SpMV等内存带宽密集型任务时具有显著优势。通过优化Sell-C-σ格式并结合多种硬件特性,研究团队成功提升了SpMV在长向量架构上的性能。这一成果不仅为长向量架构的SpMV实现提供了新的优化思路,也为其他内存密集型计算任务的高效执行提供了参考。
本文还详细讨论了不同稀疏矩阵格式(如CSR、ELLPACK、Sliced ELLPACK等)的优缺点,并对比了它们在长向量架构上的性能表现。此外,研究团队还提供了完整的实验代码和数据集,便于其他研究人员复现和验证实验结果。
本文通过一系列创新优化技术,显著提升了SpMV在长向量架构上的性能,为高性能计算领域提供了新的解决方案。研究团队的工作不仅展示了长向量架构在处理稀疏矩阵计算中的潜力,也为未来的硬件和算法设计提供了重要参考。