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

”0“拷贝

示例代码的整个流程展示了“0”拷贝的思想。所谓的“0”拷贝,指用户在整个流程中对图像数据不做任何显式的拷贝动作。为了实现“0”拷贝,需要执行以下操作。

  1. 通过HIAI_REGISTER_SERIALIZE_FUNC注册序列化函数(GetSerializeFunc)和反序列化函数(GetDeserializeFunc),实现数据类型的序列化/反序列化。
  2. 使用Matrix框架提供的HIAI_Dmalloc接口申请内存,再调用SendData接口,用于将Host侧数据向Device侧搬运。
  3. 通过HIAI_DMalloc接口申请的内存,作为图像/视频编解码的输入使用,无需进行数据拷贝。
  4. 使用Matrix框架提供的HIAI_DVPP_DMalloc接口申请的内存,内存地址满足DVPP的输入/输出要求,可直接作为图像/视频输出的使用。调用HIAI_DVPP_DMalloc接口申请内存后,必须使用HIAIMemory::HIAI_DVPP_DFree接口释放内存。

    在DVPP内部,VPC模块的输入可直接复用内存中JPEGD模块的输出数据。

  5. 通过HIAI_DVPP_DMalloc接口申请的内存,可直接作为模型推理首层的输入,无需进行数据拷贝。
分享:

    相关文档

    相关产品