Memory increases on GPU while performing modification inplace

16 views (last 30 days)
rinkert
rinkert on 21 Sep 2021
Commented: rinkert on 12 Oct 2021
When I allocate squeeze a 3D array to output a 2D array, my memory is increasing while I think I performing the modification inplace. That way I would expect that since the number of elements in the array does not incease, the memory used on the GPU does not increase.
However, I see something different in the task manager. What is going on?
  • MATLAB Version: 9.8.0.1538580 (R2020a) Update 6
  • Operating System: Microsoft Windows 10 Enterprise Version 10.0 (Build 18363)
  • NVidia GeForce RTX 3090
data = zeros(5632000, 128, 2, 'int16');
testSO(data);
function testSO(RF)
whos RF % int16 2.75 GB
size(RF); % 5632000x128x2
% GPU memory at beginning 1.2 GB
RF = gpuArray(RF); % 3.9 GB
RF = squeezingSuperFrames(RF); % 6.6 GB
end
function RF = squeezingSuperFrames(RF)
% concatenate pages of 3D array to create tall RF array
RF = reshape(permute(RF, [1 3 2]), [], size(RF, 2), 1);
end

Answers (2)

Joss Knight
Joss Knight on 10 Oct 2021
MATLAB cannot perform this operation in place because data is a workspace variable. MATLAB has no way of knowing there won't be an error or user interrupt (Ctrl-C) during execution, so it takes a copy of data to ensure your workspace would not be corrupted.
  3 Comments
rinkert
rinkert on 12 Oct 2021
Thanks for the pointer to AvailableMemory, that indeed showed that there is still memory available while nvidia-smi shows it up as in use.

Sign in to comment.


Matt J
Matt J on 10 Oct 2021
reshape() does not result in data copying, but permute() does. It cannot be done in place, because it is reordering the data in memory.
  3 Comments
rinkert
rinkert on 12 Oct 2021
yes indeed the memory is freed after the function call is completed. Seems like the memory is already available before, if I look at g=gpuDevice(); g.AvailableMemory before the function exits.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!