具有特征库的块稀疏矩阵

时间:2016-09-06 07:25:11

标签: c++ sparse-matrix eigen

我想加快我正在努力的图书馆。大多数矩阵的尺寸相当小(比如高达10x40)。大多数都是块稀疏的,在运行时已知有稀疏模式。我想利用稀疏性来加速线性代数运算。

除了基本的线性代数运算外,我还使用了SVD分解。块稀疏矩阵有助于检测零行和块对角矩阵,这可以减少分解时间。

是否有一个特定的原因,为什么稀疏矩阵只是按系数方式实现而不是按块方式实现?

我的意思是当前的实现对于具有少量非零元素的大型矩阵是有效的,但对于具有可比较的非零和零的矩阵则不然。

我查看了使用特征库实现稀疏块矩阵的the so-bogus library

1 个答案:

答案 0 :(得分:1)

对于这样的小矩阵没有太多期望,因为这会减少矢量化机会和指令流水线。您可以通过比较triangular matrix * vectorfull matrix * vector对10x10矩阵的效果来自行检查。

然后,关于SVD,情况更糟,因为这样的小矩阵JacobiSVD是优选的,并且零的结构可能在第一次扫描期间完全丢失,除非它具有非常特殊的结构,可以被利用,就像一个块对角线结构。