是否有一个稀疏矩阵库可以复制密集 BLAS 的功能?
我至少想要:
- 高效的 SYR 和 SYRK(rank-k 更新),输入稀疏(可能是密集输出),
- 稀疏对称存储的选项,
- DOT、NRM2、转置和其他标准好东西。
不过,命名和 API 不需要以 BLAS 为中心,只要它能完成工作。首选 C 或 Fortran,但 C++ 也可以。
我查看了MKL、scipy.sparse、uBLAS和Eigen3,但它们要么不支持我需要的东西,要么我不知道它们是否支持。
是否有一个稀疏矩阵库可以复制密集 BLAS 的功能?
我至少想要:
不过,命名和 API 不需要以 BLAS 为中心,只要它能完成工作。首选 C 或 Fortran,但 C++ 也可以。
我查看了MKL、scipy.sparse、uBLAS和Eigen3,但它们要么不支持我需要的东西,要么我不知道它们是否支持。
很抱歉让您失望了,但据我所知,恐怕答案是否定的。我对稀疏数据进行了广泛的研究,但没有找到任何用于稀疏矩阵操作的深度库(即 BLAS 级)。在比 BLAS 更高的级别上,对 Matlab、R、Python 和其他语言有广泛的支持。
据我所见,这是由于稀疏矩阵类型(散布矩阵、对称矩阵、带状矩阵或三对角矩阵、块对角矩阵)、它们的内容(二进制、整数、实数)及其数学属性(例如正定矩阵)的变化引起的- 不保证,满级 - 不常见)等往往使优化复杂化。
相反,我倾向于编写自己的代码来处理稀疏矩阵,重用我能做的存储和简单的计算,比如乘法。
迟早会出现一个好的低级库,但我还没有看到。
有稀疏的 blas 实现