更新时间:2021-03-18 GMT+08:00
分享

HIAI_DMalloc

通过Matrix接口申请Host侧或Device侧的内存块,配合高效数据传输使用。该接口在c_graph.h中定义。

若要给Device端分配DVPP使用的内存,您需要参考HIAI_DVPP_DMalloc

使用场景:

通过Matrix框架,将大数据从Host端搬运到Device端,该接口需要配合宏:HIAI_REGISTER_SERIALIZE_FUNC使用。

例如:需要将1080P或者4K图像发送到Device端,如果需要提升传输性能,则必须通过HIAI_REGISTER_SERIALIZE_FUNC注册结构体转换和反转函数,另外,大数据块内存则通过HIAI_DMalloc接口申请内存,使用该方式,传输性能将得到很大提升。

该接口主要用于Host与Device的搬运大数据的性能问题,如无性能要求或非传输场景,不建议使用本接口。

函数格式

void* HIAI_DMalloc (const uint32_t dataSize, const uint32_t timeOut, uint32_t flag)

参数说明

参数

说明

取值范围

dataSize

内存块大小。

  • 如果调用该接口申请Host侧内存,则取值范围是:0~256M Bytes,不包含0。推荐使用256K Bytes~256M Bytes。
  • 如果调用该接口申请Device侧内存,则取值范围是:0~(256M Bytes-96 Bytes),不包含0。推荐使用(256K Bytes-96 Byte)~(256M Bytes-96 Bytes)。Device侧模型管家会占用96 Bytes。

timeOut

当内存申请失败时,提供时延进行阻塞等待有空余内存,默认值为500毫秒。

-

flag

  • MEMORY_ATTR_AUTO_FREE :默认值, 如果设置了此值,表示如果分配了内存,且通过SendData接口发送数据到对端,则无需调用HIAI_DFree,程序运行结束后,内存会自动释放;如果分配了内存,但没有通过SendData接口发送数据到对端,则需要调用HIAI_DFree释放内存。
  • MEMORY_ATTR_MANUAL_FREE:如设置此值,表示无论何种情况,必须调用HIAI_DFree释放内存。
  • MEMORY_ATTR_NONE和MEMORY_ATTR_MAX当前未使用。

typedef enum {

MEMORY_ATTR_NONE = 0,

//框架自行释放DMalloc内存

MEMORY_ATTR_AUTO_FREE = (0x1 << 1),

//需要手动调用DFree释放内存

MEMORY_ATTR_MANUAL_FREE = (0x1 << 2),

MEMORY_ATTR_MAX

} HIAI_MEMORY_ATTR;

返回值

使用HIAI_DMalloc接口申请到的内存地址。如果申请失败,则返回空指针。

分享:

    相关文档

    相关产品