当无法一次加载到内存中时矩阵的乘法

时间:2014-01-14 19:50:36

标签: matlab matrix out-of-memory matrix-multiplication

我已经阅读了一些类似的帖子,但他们都没有真正解决我的问题。

我需要在Windows平台上为A,B执行一系列与乘法相似的操作,特别是计算内核矩阵。虽然,问题是A,B可能真的很大,让我们说,20000乘360000。虽然,我的服务器只能提供96 GB的内存。将它们同时存储在内存中并进行计算似乎是不可行的。那么有效处理这么大的乘法有什么好方法吗?顺便说一句,结果的大小,20000乘20000,远小于乘数,可以正确地适应内存。

因为我在Windows上这样做,所以调用像mmap2这样的函数可能是不可行的。

我想知道将它们转换为稀疏矩阵是一个不错的选择。但是,它可能在很大程度上取决于数据的属性。

我提出的另一个解决方案是将原点矩阵划分为块。然后逐块进行计算。

还有其他更好的解决方案吗?任何实际的建议都会非常感激。

祝你好运, 彭珮云

1 个答案:

答案 0 :(得分:0)

如果我在哪里,我会查看块处理功能:

B = blockproc(filename,[M N],fun)

并使用Destination参数来保存结果而不会溢出内存。