Allocate Memory for Scratch Buffers

Memory that is required during the execution process needs to be allocated through HAP_malloc/HAP_free call defined in the SDK. Currently, HTP core ops do not use any scratch buffers.

Here are the function calls allocate/free memory during execution:

// allocate memory
// [in] bytes size of memory block in bytes.
// [out] pptr pointer to the memory block
// Returns: int AEE_SUCCESS for success and AEE_ENOMEMORY for failure.
static int HAP_malloc(uint32 _bytes_, void ** _pptr_)

// free memory
// [in] **pptr** pointer to the memory block
// Returns: int AEE_EBADCLASS if ptr is NULL AEE_SUCCESS if ptr is not NULL
static int HAP_free(void *_ptr_)

HAP_malloc and HAP_free are simple wrappers around the DSP malloc and free functions. If a user memory allocation request cannot be fulfilled with the existing DSP heap, the FastRPC runtime will attempt to grow the DSP heap by reserving additional memory from the HLOS.

For more information, view documentation on HAP_alloc and HAP_free from the SDK doc.

Note

It is strongly discouraged to allocate memory in op execution. The time to finish the allocation is unbounded and could impact the inference speed significantly.