How to know in advance if creating matrix will run out of memory?

1 view (last 30 days)
I need to create a matrix of size N-by-M as part of a script, where N and M are inputs to the script.
So I will know N and M, and then depending on their size choose do one of the following three:
i) I want to create a gpu matrix when N and M are small enough that the relevant matrix will fit on gpu without creating an out of memory error.
ii) When N and M are too large for this I want to create the matrix on the cpu instead.
iii) If N and M are so large that I would run out of memory on the cpu then I want to create the matrix as a sparse matrix on the cpu.
Is there a way, once I know N and M, to check if the matrix will be possible to create?
[I could use 'try-catch-end', with try just erroring when creating a matrix too large for memory, but I would prefer something cleaner as I suspect that runtime to do the try-catch on a matrix too large for memory is wasteful]

Accepted Answer

Raymond Norris
Raymond Norris on 21 Dec 2021
Look at the memory command, but it's only for Windows operating system. The gpuDevice command will return AvailableMemory of a GPU. This can get you started. Keep in mind memory needed to operate on it (e.g., adding matrices, fft, etc.). It might suprise you how much memory gets used on a GPU with several matrices.
  2 Comments
Robert Kirkby
Robert Kirkby on 21 Dec 2021
Thanks.
I'm on linux so memory won't work. But checking gpu memory is much more important to me so that will help.
Is there an easy way to tell how much memory X will be used in advance?, e.g., that a N-by-M double floating point matrix will use X gigabytes?
Raymond Norris
Raymond Norris on 21 Dec 2021
Try
sz = N * M * size-of-unit / 1024 ^ units;
size-of-unit depends on int8 . . . int64 (i.e., 1 . . . 8) and units depends on MB or GB (i.e., 2 or 3). For example, size of N,M double matrix in GBs would be
sz = N * M * 8 / 1024 ^ 3;

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!