matlab中矩阵求逆,报错说内存不足怎么办,128g的工作站都跑不下来?

关注者
13
被浏览
23,573

6 个回答

关于out of memory,有一些可行的办法,主要包括以下几点。

第一,清除临时变量。对于不再需要的临时变量,要及时清除掉,释放内存。

第二,预分配内存。对于占用大内存的变量,预先为其分配内存,能够有效避免内存碎片化导致的out of memory。

第三,使用稀疏变量。对于有大量0的稀疏矩阵来说,稀疏变量占用内存更小。

第四,pack命令。pack命令能够整理内存,将碎片化的内存整合起来。

第五,尝试使用较低精度的运算,比如将double类型改为single。如果可能,可以使用整数类型如int16之类的进行运算。

第六,增大虚拟内存。增大虚拟内存能够一定程度上弥补物理内存不足的缺点。

第七,仅加载需要的内存。对于大型数据集,可以不用一次性全部载入内存,参考datastore mapReduce等函数的使用。

第八,使用tall数组。一些函数支持对tall的运算,tall数组能够处理无法放入内存的数据。

第九,使用多台计算机的内存。通过创建计算机集群能够利用集群内所有内存进行计算。

第十,升级硬件。软件不够,硬件来凑。