特征稀疏矩阵

时间:2013-09-20 01:44:36

标签: sparse-matrix matrix-multiplication eigen

我试图使用Eigen将两个大小为300k * 1000k和1000k * 300k的稀疏矩阵相乘。矩阵非常稀疏~0.01%非零条目,但稀疏性没有阻塞或其他结构。

事实证明,Eigen扼杀并最终占用了55-60G的内存。实际上,它使最终的矩阵密集,这解释了为什么需要这么多的内存。

当矩阵中的一个是对角线并且乘法工作正常时,我尝试将相似大小的矩阵相乘,内存大约为2-3 G。

关于什么是错误的任何想法?

1 个答案:

答案 0 :(得分:2)

即使你的矩阵很稀疏,结果也可能是完全密集的。您可以尝试使用(A*B).prune(ref,eps);删除最小的条目,其中ref是非零的参考值,eps是公差值。基本上,在产品计算期间将删除小于ref * eps的所有条目,从而减少内存使用和结果的大小。更好的选择是找到避免执行此产品的方法。

相关问题