I'm trying to calculate the memory used by a MATLAB process before and after solving a large sparse matrix. I'm using
memory and the direct solver
What I want is just to mesaure by monitoring in some way the memory used by MATLAB and to calculate the difference between the memory used just after loading the file containing a sparse matrix and the memory used just after solving the sparse system.
Here the code I'm using
% 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);
But the difference is always
0 or a negative integer. I think because MATLAB pre-allocates memory before running the code (am I wrong?) and it doesn't change the allocation dinamically if not for emergency.
I expect an increase of the memory used, because through direct solvers the fill-in increase the number of non-zero elements.
How can I calculate it? I have seen
whos that gives the size in bytes of a variable, but what I'm looking for is the memory used by the process.
I've just found that MATLAB pre-allocates its resources. Then an equivalent question could be is there a method to disable the pre-allocating system?