Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB Linux内存不足错误_Linux_Matlab - Fatal编程技术网

MATLAB Linux内存不足错误

MATLAB Linux内存不足错误,linux,matlab,Linux,Matlab,我们正在运行一个大型的MATLAB程序。经过大约24小时的计算,它会因“内存不足”错误而停止 在发生此错误前不久,进程状态非常健康,进程在一台12 Gb RAM机器上使用了大约3 Gb的内存,交换容量为32 Gb。我们没有理由相信该过程的行为会有很大的不同,在类似过程的迭代3中,前三次迭代会导致2.7GB的峰值。该过程在没有GUI的情况下运行,使用-nojvm选项,使用MatlabR2013A。错误发生在两台不同的计算机上。根据精确的参数化,错误发生在程序中的不同位置 我的问题是:在MATLAB

我们正在运行一个大型的MATLAB程序。经过大约24小时的计算,它会因“内存不足”错误而停止

在发生此错误前不久,进程状态非常健康,进程在一台12 Gb RAM机器上使用了大约3 Gb的内存,交换容量为32 Gb。我们没有理由相信该过程的行为会有很大的不同,在类似过程的迭代3中,前三次迭代会导致2.7GB的峰值。该过程在没有GUI的情况下运行,使用-nojvm选项,使用MatlabR2013A。错误发生在两台不同的计算机上。根据精确的参数化,错误发生在程序中的不同位置

我的问题是:在MATLAB/Linux/64位中,除了普通RAM之外,还有其他资源可以链接到内存不足消息吗?它是否与内存碎片有关?我们如何衡量内存碎片的当前水平

Matlab错误:

CATCH in vsProcessVideosetByFrame.Error using cat
Out of memory. Type HELP MEMORY for your options.

Error in ttClassDetections/horzcat (line 170)
            output.data.(fn{j}) = cat(2,temp{:});
进程状态在崩溃前不久出现内存不足消息:

schuttek@pc-07843:~$ cat /proc/14123/status
Name:   MATLAB
State:  S (sleeping)
Tgid:   14123
Ngid:   0
Pid:    14123
PPid:   1
TracerPid:      0
Uid:    8793    8793    8793    8793
Gid:    100     100     100     100
FDSize: 256
Groups: 4 24 27 30 46 100 108 124 501
NStgid: 14123
NSpid:  14123
NSpgid: 14123
NSsid:  11423
VmPeak:  2744640 kB
VmSize:  2613568 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:   1045376 kB
VmRSS:   1025692 kB
VmData:  2095720 kB
VmStk:       132 kB
VmExe:        12 kB
VmLib:    179980 kB
VmPTE:      2920 kB
VmPMD:        24 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
Threads:        18
SigQ:   1/64005
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000008080006
SigIgn: 0000000000000001
SigCgt: 00000001880804ee
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp:        0
Cpus_allowed:   ffffffff
Cpus_allowed_list:      0-31
Mems_allowed:   00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        37
nonvoluntary_ctxt_switches:     5

因为这可能不是OOM杀手(因为
dmesg | grep kill
为空),所以错误应该是MATLAB内部的

一个可能的原因确实是内存碎片;至少有些MATLAB例程似乎明确地请求可能耗尽的连续内存区域。这可以通过
pack
-一个协调内存的MATLAB函数来缓解

这是文档页面。请务必注意有关大于2GB的变量的警告


到目前为止,在Windows 10 64位系统上运行似乎可以解决我们的问题。

执行一个
dmesg | grep-i kill
,OOM killer通常在终止一个有问题的程序时写一些东西。如果您发布原始的MATLAB错误原始MATLAB错误添加。dmesg | grep-i kill不会产生任何输出。我不相信系统出现了内存不足的情况。你说:“根据精确的参数化,错误发生在程序中的不同位置。”你是指在同一行代码中,但在不同的迭代次数之后,还是在不同的代码行(但总是在迭代3中)出现错误?