Memory manager related functions. More...

Functions

AFAPI void setMemStepSize (const size_t size)
 Set the resolution of memory chunks. More...
 
AFAPI size_t getMemStepSize ()
 Get the resolution of memory chunks. More...
 
AFAPI af_err af_device_mem_info (size_t *alloc_bytes, size_t *alloc_buffers, size_t *lock_bytes, size_t *lock_buffers)
 Get memory information from the memory manager. More...
 
AFAPI af_err af_print_mem_info (const char *msg, const int device_id)
 Prints buffer details from the ArrayFire Device Manager. More...
 
AFAPI af_err af_device_gc ()
 Call the garbage collection routine. More...
 
AFAPI af_err af_set_mem_step_size (const size_t step_bytes)
 Set the minimum memory chunk size. More...
 
AFAPI af_err af_get_mem_step_size (size_t *step_bytes)
 Get the minimum memory chunk size. More...
 
AFAPI af_err af_lock_device_ptr (const af_array arr)
 Lock the device buffer in the memory manager. More...
 
AFAPI af_err af_unlock_device_ptr (const af_array arr)
 Unlock device buffer in the memory manager. More...
 
AFAPI af_err af_lock_array (const af_array arr)
 Lock the device buffer in the memory manager. More...
 
AFAPI af_err af_unlock_array (const af_array arr)
 Unlock device buffer in the memory manager. More...
 
AFAPI af_err af_is_locked_array (bool *res, const af_array arr)
 Query if the array has been locked by the user. More...
 
AFAPI af_err af_get_device_ptr (void **ptr, const af_array arr)
 Get the device pointer and lock the buffer in memory manager. More...
 
AFAPI void deviceMemInfo (size_t *alloc_bytes, size_t *alloc_buffers, size_t *lock_bytes, size_t *lock_buffers)
 Gets information about the memory manager. More...
 
AFAPI void printMemInfo (const char *msg=NULL, const int device_id=-1)
 Prints buffer details from the ArrayFire Device Manager. More...
 
AFAPI void deviceGC ()
 Call the garbage collection function in the memory manager. More...
 

Detailed Description

Memory manager related functions.

Memory manager related functions

Function Documentation

◆ af_device_gc()

AFAPI af_err af_device_gc ( )

Call the garbage collection routine.

◆ af_device_mem_info()

AFAPI af_err af_device_mem_info ( size_t *  alloc_bytes,
size_t *  alloc_buffers,
size_t *  lock_bytes,
size_t *  lock_buffers 
)

Get memory information from the memory manager.

◆ af_get_device_ptr()

AFAPI af_err af_get_device_ptr ( void **  ptr,
const af_array  arr 
)

Get the device pointer and lock the buffer in memory manager.

The device pointer ptr is notfreed by memory manager until af_unlock_device_ptr is called.

Note
For OpenCL backend *ptr should be cast to cl_mem.

◆ af_get_mem_step_size()

AFAPI af_err af_get_mem_step_size ( size_t *  step_bytes)

Get the minimum memory chunk size.

Works only with the default memory manager - returns an error if a custom memory manager is set.

◆ af_is_locked_array()

AFAPI af_err af_is_locked_array ( bool *  res,
const af_array  arr 
)

Query if the array has been locked by the user.

An array can be locked by the user by calling af_lock_array or af_get_device_ptr or af_get_raw_ptr function.

◆ af_lock_array()

AFAPI af_err af_lock_array ( const af_array  arr)

Lock the device buffer in the memory manager.

Locked buffers are not freed by memory manager until af_unlock_array is called.

◆ af_lock_device_ptr()

AFAPI af_err af_lock_device_ptr ( const af_array  arr)

Lock the device buffer in the memory manager.

Locked buffers are not freed by memory manager until af_unlock_array is called.

◆ af_print_mem_info()

AFAPI af_err af_print_mem_info ( const char *  msg,
const int  device_id 
)

Prints buffer details from the ArrayFire Device Manager.

The result is a table with several columns:

POINTER: The hex address of the array's device or pinned-memory pointer SIZE: Human-readable size of the array AF LOCK: Indicates whether ArrayFire is using this chunk of memory. If not, the chunk is ready for reuse. USER LOCK: If set, ArrayFire is prevented from freeing this memory. The chunk is not ready for re-use even if all ArrayFire's references to it go out of scope.

Parameters
[in]msgA message to print before the table
[in]device_idprint the memory info of the specified device. -1 signifies active device.
Returns
AF_SUCCESS if successful

◆ af_set_mem_step_size()

AFAPI af_err af_set_mem_step_size ( const size_t  step_bytes)

Set the minimum memory chunk size.

Works only with the default memory manager - returns an error if a custom memory manager is set.

◆ af_unlock_array()

AFAPI af_err af_unlock_array ( const af_array  arr)

Unlock device buffer in the memory manager.

This function will give back the control over the device pointer to the memory manager.

◆ af_unlock_device_ptr()

AFAPI af_err af_unlock_device_ptr ( const af_array  arr)

Unlock device buffer in the memory manager.

This function will give back the control over the device pointer to the memory manager.

◆ deviceGC()

AFAPI void af::deviceGC ( )

Call the garbage collection function in the memory manager.

◆ deviceMemInfo()

AFAPI void af::deviceMemInfo ( size_t *  alloc_bytes,
size_t *  alloc_buffers,
size_t *  lock_bytes,
size_t *  lock_buffers 
)

Gets information about the memory manager.

Parameters
[out]alloc_bytesthe number of bytes allocated by the memory
[out]alloc_buffersthe number of buffers created by the memory
[out]lock_bytesThe number of bytes in use
[out]lock_buffersThe number of buffers in use
Note
This function performs a synchronization operation

◆ getMemStepSize()

AFAPI size_t af::getMemStepSize ( )

Get the resolution of memory chunks.

Works only with the default memory manager - throws if a custom memory manager is set.

◆ printMemInfo()

AFAPI void af::printMemInfo ( const char *  msg = NULL,
const int  device_id = -1 
)

Prints buffer details from the ArrayFire Device Manager.

Parameters
[in]msgA message to print before the table
[in]device_idprint the memory info of the specified device. -1 signifies active device.
Note
This function performs a synchronization operation

◆ setMemStepSize()

AFAPI void af::setMemStepSize ( const size_t  size)

Set the resolution of memory chunks.

Works only with the default memory manager - throws if a custom memory manager is set.