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

1 visualización (últimos 30 días)
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]

Respuesta aceptada

Raymond Norris
Raymond Norris el 21 de Dic. de 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 comentarios
Robert Kirkby
Robert Kirkby el 21 de Dic. de 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 el 21 de Dic. de 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;

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by