MATLAB Linux Ошибка нехватки памяти - PullRequest
0 голосов
/ 23 мая 2018

Мы запускаем большую программу MATLAB.Примерно после 24 часов вычислений он останавливается с ошибкой «Недостаточно памяти».

Незадолго до того, как эта ошибка возникла, состояние процесса было достаточно здоровым, процесс занимал около 3 ГБ на машине с 12 ГБ ОЗУ с 32Гб своп.У нас нет оснований полагать, что процесс должен вести себя по-другому, это было в итерации 3 аналогичного процесса, где первые три итерации приводят к VmPeak 2,7 Гб.Процесс был запущен без графического интерфейса, используя опцию -nojvm, используя MATLAB r2013a.Ошибка произошла на двух разных компьютерах.В зависимости от точной параметризации, ошибка возникает в разных местах программы.

Мой вопрос: есть ли в MATLAB / Linux / 64 bit другой ресурс, чем обычная RAM, который может ссылаться на сообщение Out of Memory?Может ли это быть связано с фрагментацией памяти, и как мы можем измерить текущий уровень фрагментации памяти?

Ошибка 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

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Пока что работа в 64-битной системе Windows 10, похоже, решает нашу проблему.

0 голосов
/ 24 мая 2018

Поскольку это, вероятно, не убийца OOM (поскольку dmesg | grep kill пусто), ошибка должна быть внутренней по отношению к MATLAB.

Одна из возможных причин - фрагментация памяти;По крайней мере, некоторые подпрограммы MATLAB явно запрашивают непрерывные области памяти, в которых вы можете исчерпать.Это может быть облегчено с помощью pack - функции MATLAB, которая согласовывает память.

Вот страница документации.Обязательно примите во внимание предупреждение о переменных размером более 2 ГБ!

https://www.mathworks.com/help/matlab/ref/pack.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...