需要一个稀疏矩阵库

发布于 2024-11-28 02:02:49 字数 669 浏览 1 评论 0 原文

是否有一个稀疏矩阵库可以复制密集 BLAS 的功能?

我至少想要:

  1. 具有稀疏输入(可能还有密集输出)的高效 SYR 和 SYRK(rank-k 更新)、
  2. 稀疏对称存储选项、
  3. DOT、NRM2、转置和其他标准好东西。

不过,命名和 API 不需要以 BLAS 为中心,只要它能完成工作即可。首选 C 或 Fortran,但 C++ 也可以。

我查看了 MKLscipy.sparseuBLASEigen3,但他们要么不支持我需要的东西,要么我不知道他们是否支持。

Is there a sparse matrix library that copies the functionality of dense BLAS?

I'd want at least:

  1. efficient SYR and SYRK (rank-k update) with sparse input (and possibly dense output),
  2. option for sparse symmetric storage,
  3. DOT, NRM2, transpose and other standard goodies.

The naming and API doesn't need to be BLAS-centric though, as long as it does the job. C or Fortran preferred, but C++ is also ok.

I looked at MKL, scipy.sparse, uBLAS and Eigen3, but they either didn't support what I need or I couldn't figure out whether they do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水晶透心 2024-12-05 02:02:49

很抱歉让您失望了,但据我所知,恐怕答案是否定的。我对稀疏数据进行了广泛的研究,但没有找到任何用于稀疏矩阵操作的深层库(即 BLAS 级别)。比BLAS更高层次,有Matlab、R、Python等语言的广泛支持。

据我所知,这是由于稀疏矩阵的类型(分散矩阵、对称矩阵、带状矩阵或三对角矩阵、块对角矩阵)、其内容(二进制、整数、实数)及其数学属性(例如正定矩阵)的变化而产生的。 - 不保证,满级 - 不常见)等往往会使优化变得复杂。

相反,我倾向于编写自己的代码来处理稀疏矩阵,重新使用我可以使用的存储和乘法等简单计算。

随着时间的推移,一个好的低级库将会出现,但我还没有看到它。

I'm sorry to disappoint, but, as far as I can tell, I am afraid the answer is no. I've worked extensively with sparse data and have not found any deep libraries (i.e. BLAS-level) for sparse matrix manipulations. At a higher level than BLAS, there is extensive support in Matlab, R, Python, and other languages.

From what I've seen, this arises because of the variations in the types of sparse matrices (scattered, symmetric, banded or tridiagonal, block diagonal), their contents (binary, integer, real), and their mathematical properties (e.g. positive definite - not guaranteed, full rank - not common), etc. tends to complicate the optimizations.

Instead, I tend to write my own code for processing sparse matrices, re-using what I can for the storage and simple computations like multiplication.

In time, a good low-level library will arise, but I've not yet seen it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文