【问题标题】:Sparse matrices, sparse accumulator and multiplication稀疏矩阵、稀疏累加器和乘法
【发布时间】:2021-02-26 19:15:12
【问题描述】:

我正在尝试实现本文中的两个稀疏矩阵相乘的算法:https://crd.lbl.gov/assets/pubs_presos/spgemmicpp08.pdf(第一个算法 - 一维算法)。

困扰我的是我不确定 SPA(稀疏累加器)到底是什么。我做了一些研究,我得出的结论是 SPA 代表 ????????????????????????稀疏矩阵的行/列(我主要不确定那部分),它由一个具有非零值的密集向量、一个非零元素的索引列表(为什么要列出?)和一个由“占用”标志(如果该位置上的活动行/列中的元素不为零,则在 ??????-th 索引上的??????????????????)。有些还保留非零输入的数量。

我说的对吗?如果是这样,我有一些问题。如果这个结构有一个密集的布尔向量并且我们必须保留这些值,那么简单地填充一个密集的向量并忽略它是稀疏的不是更容易吗?我确信这有一些原因可以提高效率(内存和时间),但我不明白为什么。

另外,正如我已经问过的,为什么除了索引列表之外的一切都是向量?为什么不也是一个向量?

提前致谢!

【问题讨论】:

    标签: sparse-matrix matrix-multiplication


    【解决方案1】:

    许多稀疏矩阵算法使用密集工作向量来允许随机访问矩阵的当前“活动”列或行。

    稀疏的 MATLAB 实现通过定义一个 称为稀疏累加器或 SPA 的抽象数据类型。 SPA 由实数(或复数)值的密集向量、真/假“占用”标志的密集向量以及占用标志为真的索引的无序列表组成。 SPA 表示一个列向量,其“未占用”位置为零,并且 其“占用”位置的值(零或非零)由稠密实数或复数向量指定。它允许在恒定时间内随机访问单个元素,以及在恒定时间内对每个元素的占用位置进行排序。

    https://epubs.siam.org/doi/pdf/10.1137/0613024查看第 3.1.3 节

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多