如何计算稀疏矩阵 - 矩阵乘积?我知道这样做的“经典”/数学方式,但它似乎效率很低。
我考虑过以 CSR 形式存储第一个矩阵,以 CSC 形式存储第二个矩阵,因此由于行向量和列向量已排序,因此我不必搜索我需要的特定行/列,但我想这不会帮助很大。
如何计算稀疏矩阵 - 矩阵乘积?我知道这样做的“经典”/数学方式,但它似乎效率很低。
我考虑过以 CSR 形式存储第一个矩阵,以 CSC 形式存储第二个矩阵,因此由于行向量和列向量已排序,因此我不必搜索我需要的特定行/列,但我想这不会帮助很大。
做一个稀疏-稀疏矩阵乘积几乎总是低效的. 简单地考虑几乎总是更有效作为可以应用于向量的运算符,即计算. 每当需要这样的操作时,您可以分两步进行计算:,即,您只需连续执行两个矩阵向量乘积即可得到结果。为此,不必实际形成乘积矩阵.
如果您绝对必须形成产品,请查看https://svn.dealii.org/trunk/deal.II/include/deal.II/lac/sparse_matrix.templates.h并搜索 mmult() 函数。