gpucoder.MemoryManager - Query memory usage by shared GPU memory manager for MEX functions - MATLAB (original) (raw)
Main Content
cudaMemoryManager
Query memory usage by shared GPU memory manager for MEX functions
Since R2024a
Description
The gpucoder.MemoryManager
object contains properties that describe the memory usage by the shared GPU memory manager for MEX functions. To create agpucoder.MemoryManager
object, use thecudaMemoryManager
function. To free unused GPU memory allocated by the memory manager, use the object function freeUnusedMemory
.
Creation
Syntax
Description
`memoryManager` = cudaMemoryManager
returns an object that describes the memory usage by the shared GPU memory manager for MEX functions.
The GPU memory manager performs efficient allocation and deallocation of GPU memory. The memory manager returned by the cudaMemoryManager
function is shared across all MEX functions that are generated with the memory manager enabled.
Properties
This property is read-only.
Total amount of GPU memory reserved by the memory manager, specified as auint64
value. This includes memory that is currently in use by MEX functions and memory that is not in use. The memory manager reserves large chunks of memory, referred to as memory pools, to cater to the needs of multiple MEX functions.
Data Types: uint64
This property is read-only.
Amount of GPU memory currently being used by MEX functions, specified as auint64
value.
Data Types: uint64
This property is read-only.
Amount of GPU memory that is reserved but not currently in use, specified as auint64
value.
Data Types: uint64
Object Functions
Use the object function freeUnusedMemory
to free GPU memory allocated by the memory manager that is not used by any MEX function. This function accepts a gpucoder.MemoryManager
object as input, frees unused GPU memory, and returns another gpucoder.MemoryManager
object that represents the new state of the memory manager.
Examples
In this example, you use the cudaMemoryManager
function to inspect GPU memory usage during MEX execution. You then use thefreeUnusedMemory
object function to free the memory that is currently not in use.
Create a MATLAB® entry-point function simpleAdd
.
function c = simpleAdd(a, b)
coder.gpu.kernelfun; c = coder.nullcopy(zeros(size(a)));
for i = 1:numel(a) c(i) = a(i) + b(i); end
end
During code generation, the GPU memory manager is enabled by default. To generate CUDA® MEX function for simpleAdd
, run this command in the MATLAB Command Window:
codegen -args {ones(2048, 1), ones(2048, 1)} simpleAdd -gpuprofile
Run the generated CUDA MEX.
simpleAdd_mex(ones(2048, 1),ones(2048, 1));
Create a gpucoder.MemoryManager
object by using thecudaMemoryManager
function and display its properties.
memMgr = cudaMemoryManager
memMgr =
MemoryManager with properties:
TotalReservedMemory: 8388608 (8.00 MB)
MemoryInUse: 0
MemoryNotInUse: 8388608 (8.00 MB)
Use the freeUnusedMemory
function to free the GPU memory that is not in use. Display the new gpucoder.MemoryManager
object.
freeUnusedMemory(memMgr); memMgr
memMgr =
MemoryManager with properties:
TotalReservedMemory: 0
MemoryInUse: 0
MemoryNotInUse: 0
Version History
Introduced in R2024a