【发布时间】:2017-01-12 11:14:58
【问题描述】:
我正在尝试在最新的 MATLAB 版本 (R2016b) 中构建大小为 744×744×744×3×3 的五个单精度数组。
但是,当我构建第一个数组时,我得到了错误:
请求的 744x744x744x2x3 (9.2GB) 阵列超出了最大阵列大小首选项。创建大于此限制的数组可能需要很长时间 时间并导致 MATLAB 变得无响应。有关详细信息,请参阅数组大小限制或首选项面板。
我在 MATLAB 中将工作区首选项设置为最大数组大小 1e4,这是它所允许的全部。我将 Windows 10 中的最大虚拟内存设置为 400GB。
我也阅读了这个论坛的相关帖子,但他们没有回答我的问题。是不可能构建这么大的数组还是我遗漏了什么?
【问题讨论】:
-
为什么要保存这么大的矩阵?处理这样的矩阵非常困难和缓慢,最好将其划分为一些文件或变量......
-
如果可能的话,我更愿意这样做,因为我已经编写了一个非常适用于较小数组的程序。这是一个带有反向归纳的随机动态规划优化。如果不可能有那么大的数组,我认为必须重新编写模型并逐步进行,即构建矩阵的一部分并保存最后一层,然后构建下一部分。但我更愿意让它保持现在的工作方式。
-
应该是五个 13.8GB 阵列(总共 69GB)。不用说,如果 MATLAB 没有足够的连续 RAM 可用,这将是一个问题。
memory(在 MATLAB 中)的输出是什么?sparse有帮助吗? -
顺便问一下,是 744×744×744×3×3(在你的问题中)还是 744×744×744×2×3(在 MATLAB 的错误消息中)?
-
我曾使用过具有超过 512GB 可用 RAM 的服务器和集群。在这类机器上,您的阵列不会造成太大问题。但听起来您使用的是普通 PC,(可能)更像是 16GB 或 RAM。如果是这样的话,这个操作将会非常缓慢——将问题分成更小的部分,就像@Adiel 建议的那样