Matlab:乘法运算期间出现内存不足错误
Matlab: Out of memory error during multiplication operation
R = randn(960,d); creates a matrix of random numbers.
我有另一个维度 1000000 by 960
的矩阵 X
。我做手术的时候
B = (X*R >=0) ;
我收到错误
Error using *
Out of memory. Type HELP MEMORY for your options.
对于 d = 4096
。但是,d < 4096
esp 没有错误。 d = [32 64 128 256 512 1024 2048 ]
没有问题,除了 d>4096
的情况。 X 具有单精度格式的数据元素。
键入 memory
得到
Maximum possible array: 15663 MB (1.642e+010 bytes) *
Memory available for all arrays: 15663 MB (1.642e+010 bytes) *
Memory used by MATLAB: 4706 MB (4.935e+009 bytes)
Physical Memory (RAM): 8151 MB (8.547e+009 bytes)
* Limited by System Memory (physical + swap file) available.
我不知道如何解决这个问题。我是 运行 Matlab 64 位 2011b 版本,在 Windows 64 位 OS 上,具有 8 GB RAM 和 i7 处理器。请帮忙!
在这里,一点点数学就派上用场了。
在 Matlab 中,单精度的 1 个元素在内存中占用 4 个字节,而双精度的 1 个元素占用 8 个字节。
X
(单精度)大小为1000000*960个元素,每个元素4个字节,共3.84GB。
R
(双精度)的大小为 960*4096 个元素,每个元素 8 个字节,总共 0.0315 GB。
现在的问题是产品 X*R
,它必须预先分配然后求值,以便在 B
上提供逻辑索引。矩阵 X*R
的大小为 1000000*4096,假设这样的矩阵是单精度的(据我所知,双精度和单精度的乘积也是单精度),它将占用大约 16GB。这肯定会阻塞物理内存和虚拟内存(而且 16GB 大于内存命令中的 Maximum possible array
大小)。
R = randn(960,d); creates a matrix of random numbers.
我有另一个维度 1000000 by 960
的矩阵 X
。我做手术的时候
B = (X*R >=0) ;
我收到错误
Error using *
Out of memory. Type HELP MEMORY for your options.
对于 d = 4096
。但是,d < 4096
esp 没有错误。 d = [32 64 128 256 512 1024 2048 ]
没有问题,除了 d>4096
的情况。 X 具有单精度格式的数据元素。
键入 memory
得到
Maximum possible array: 15663 MB (1.642e+010 bytes) *
Memory available for all arrays: 15663 MB (1.642e+010 bytes) *
Memory used by MATLAB: 4706 MB (4.935e+009 bytes)
Physical Memory (RAM): 8151 MB (8.547e+009 bytes)
* Limited by System Memory (physical + swap file) available.
我不知道如何解决这个问题。我是 运行 Matlab 64 位 2011b 版本,在 Windows 64 位 OS 上,具有 8 GB RAM 和 i7 处理器。请帮忙!
在这里,一点点数学就派上用场了。
在 Matlab 中,单精度的 1 个元素在内存中占用 4 个字节,而双精度的 1 个元素占用 8 个字节。
X
(单精度)大小为1000000*960个元素,每个元素4个字节,共3.84GB。
R
(双精度)的大小为 960*4096 个元素,每个元素 8 个字节,总共 0.0315 GB。
现在的问题是产品 X*R
,它必须预先分配然后求值,以便在 B
上提供逻辑索引。矩阵 X*R
的大小为 1000000*4096,假设这样的矩阵是单精度的(据我所知,双精度和单精度的乘积也是单精度),它将占用大约 16GB。这肯定会阻塞物理内存和虚拟内存(而且 16GB 大于内存命令中的 Maximum possible array
大小)。