我已经阅读了一些类似的帖子,但他们都没有真正解决我的问题。
我需要在Windows平台上为A,B执行一系列与乘法相似的操作,特别是计算内核矩阵。虽然,问题是A,B可能真的很大,让我们说,20000乘360000。虽然,我的服务器只能提供96 GB的内存。将它们同时存储在内存中并进行计算似乎是不可行的。那么有效处理这么大的乘法有什么好方法吗?顺便说一句,结果的大小,20000乘20000,远小于乘数,可以正确地适应内存。
因为我在Windows上这样做,所以调用像mmap2这样的函数可能是不可行的。
我想知道将它们转换为稀疏矩阵是一个不错的选择。但是,它可能在很大程度上取决于数据的属性。
我提出的另一个解决方案是将原点矩阵划分为块。然后逐块进行计算。
还有其他更好的解决方案吗?任何实际的建议都会非常感激。
祝你好运, 彭珮云
答案 0 :(得分:0)
如果我在哪里,我会查看块处理功能:
B = blockproc(filename,[M N],fun)
并使用Destination
参数来保存结果而不会溢出内存。