SpComp:稀疏结构特定的矩阵操作编译

摘要:稀疏矩阵操作涉及大量的零操作数,这使得大多数操作变得多余。当一个矩阵操作在稀疏数据上重复执行时,冗余量会增大。为了优化稀疏矩阵操作,可以在编译时或运行时重新组织数据或计算。尽管编译时技术避免了引入运行时开销,但它们的应用要么局限于生成稠密输出并处理不可变稀疏矩阵的简单稀疏矩阵操作,要么需要手动干预来定制不同矩阵操作的技术。我们提出了一种称为SpComp的编译时技术,通过自动定制计算过程中数据的非零值位置来优化稀疏矩阵操作。我们的方法既不产生任何运行时开销,也不需要任何手动干预。它也适用于生成稀疏输出并处理可变稀疏矩阵的复杂矩阵操作。我们引入了一种称为Essential Indices Analysis的数据流分析,静态收集有关计算的符号信息,并帮助代码生成器重新组织计算。生成的代码包括分段正则循环,不含间接引用,并且易于进一步优化。与最先进的TACO编译器和分段正则代码生成器相比,通过SpComp生成的SpMSpV代码实现了可观的性能提升。平均而言,与TACO相比,我们实现了79%的性能提升,与分段正则代码生成器相比实现了83%的性能提升。与CHOLMOD库相比,SpComp生成的稀疏Cholesky分解代码平均实现了65%的性能提升。

作者:Barnali Basak, Uday P. Khedker, Supratim Biswas

论文ID:2307.06109

分类:Mathematical Software

分类简称:cs.MS

提交时间:2023-07-13

PDF 下载: 英文版 中文版pdf翻译中