大型稀疏矩阵乘法

lea*_*ner 7 matlab matrix octave sparse-matrix matrix-multiplication

我有一个非常大且稀疏的矩阵,大小为180GB(文本,30k*3M),仅包含条目而没有其他数据.我必须对它进行矩阵乘法,求逆和一些类似的线性代数运算.我尝试了八度和简单的单线程C代码进行乘法,但是40GB的系统RAM很快用完,然后我发现程序开始抖动.还有其他选择吗?我不熟悉MathLab或任何其他可以帮助我这样做的矩阵操作库.

当我运行具有10行和3 M列的两个矩阵的简单矩阵乘法及其转置时,它会出现以下错误:

    memory exhausted or requested size too large for range of Octave's index type
Run Code Online (Sandbox Code Playgroud)

我不确定这些是否适用于Matlab.对于稀疏矩阵表示和矩阵乘法,是否有另一个库或代码.

Lol*_*olo 0

您是否考虑过以块的形式执行处理?转置和乘法与块矩阵处理配合得很好(参见https://en.wikipedia.org/wiki/Block_matrix),这将使您绕过有关索引的任何限制。

但这对矩阵求逆没有帮助,除非当不在对角线上的块完全为空时,您可以将矩阵分解为块,这在您的假设中没有说明。