$darkmode
A high-performance general-purpose compute library

  Interfaces for writing custom memory managers.
More...

Modules

 Memory Manager API
 Functions for defining custom memory managers.
 
 Memory Manager Utils
 Set and unset memory managers, set and get manager payloads, function setters.
 
 Native Memory Interface
 Native alloc, native free, get device id, etc.
 

Detailed Description

  Interfaces for writing custom memory managers.

Create and set a custom memory manager by first defining the relevant closures for each required function, for example:

af_err my_initialize(af_memory_manager manager) {
void* myPayload = malloc(sizeof(MyPayload_t));
af_memory_manager_set_payload(manager, myPayload);
// ...
}
af_err my_allocated(af_memory_manager handle, size_t* size, void* ptr) {
void* myPayload;
af_memory_manager_get_payload(manager, &myPayload);
// ...
}

Create an af_memory_manager and attach relevant closures:

af_memory_manager_set_initialize_fn(manager, my_initialize);
af_memory_manager_set_allocated_fn(manager, my_allocated);
// ...

Set the memory manager to be active, which shuts down the existing memory manager:

Unset to re-create and reset an instance of the default memory manager: