Я пытаюсь вычислить память, используемую процессом MATLAB до и после решения большой разреженной матрицы. Я использую memory
и прямой решатель A\b
.Matlab - использование памяти после решения большой системы
То, что я хочу, - это просто mesaure, контролируя в некотором роде память, используемую MATLAB, и вычислить разницу между памятью, используемой сразу после загрузки файла, содержащего разреженную матрицу, и память, используемую сразу после решения разреженной системы.
Вот код, я использую
% load and store the sparse matrix into A
A = load('very_large_sparse_matrix.mat');
% store memory used after loading
usr = memory;
memory_after_load = usr.MemUsedMATLAB;
% solve the system
% no matter where b comes from
x = A\b
% store memory used after solving
usr = memory;
memory_after_solve = usr.MemUsedMATLAB;
% print the difference
disp(memory_after_solve - memory_after_load);
Но разница всегда 0
или отрицательное целое число. Я думаю, потому что MATLAB предварительно распределяет память перед запуском кода (я ошибаюсь?), И он не меняет распределение динамически, если не для чрезвычайной ситуации.
Я ожидаю увеличения используемой памяти, потому что через прямые решатели заполнение увеличивает количество ненулевых элементов.
Как его рассчитать? Я видел whos
, который дает размер в байтах переменной, но то, что я ищу, - это память, используемая процессом.
спасибо.
EDIT
Я только что нашел, что MATLAB заранее распределяет свои ресурсы. Тогда эквивалентный вопрос может быть Есть ли способ отключить предопределяющую систему?
Интересный вопрос. С нетерпением ждем ответа на вопрос. – rayryeng
Я не думаю, что проблема заключается в предопределении, так как Matlab возвращает дополнительную память, запрошенную им Системой, после завершения решения. Я был бы в ужасе, если бы была возможность отключить этот механизм. Вы можете получить приблизительную оценку, сравнив использование пиковой памяти с текущим использованием памяти в Системе. – TroyHaskin
Я тоже подумал о сравнении информации о системе. Мне не нужен точный результат, тогда он будет хорошим рабочим (временным) решением. – Firaja