模型推理

hbDNNInferV2

int32_t hbDNNInferV2(hbUCPTaskHandle_t *taskHandle, hbDNNTensor *output, hbDNNTensor const *input, hbDNNHandle_t dnnHandle);

根据输入参数创建同步/异步推理任务。对于异步任务,调用方可以跨函数、跨线程使用返回的 taskHandle

  • 参数
    • [out] taskHandle 任务句柄指针。
    • [in/out] output 推理任务的输出。
    • [in] input 推理任务的输入。
    • [in] dnnHandle DNN句柄指针。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
注解
  1. 如果 taskHandle 置为 nullptr,则会自动创建同步任务,接口返回即推理完成。

  2. 如果 *taskHandle 置为 nullptr,则会自动创建异步任务,接口返回的 taskHandle 可用于后续阻塞或回调。

  3. 如果 *taskHandle 非空,并且指向之前已经创建但未提交的任务,则会自动创建新任务并添加进来。

最多支持同时存在32个模型任务。

hbDNNGetTaskOutputTensorProperties

int32_t hbDNNGetTaskOutputTensorProperties(hbDNNTensorProperties *properties, hbUCPTaskHandle_t taskHandle, int32_t subTaskIndex, int32_t outputIndex);

获取 taskHandle 指向任务特定输出的动态属性信息。

  • 参数
    • [out] properties 任务特定输出的属性信息。
    • [in] taskHandle 任务句柄指针。
    • [in] subTaskIndex 子任务的编号。
    • [in] outputIndex 子任务输出张量的编号。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
注解
  1. 模型如果存在动态输出,需要通过该接口获取任务输出的动态属性信息,方便后续处理,非动态输出张量信息与 hbDNNGetOutputTensorProperties 获取到的相同。

  2. taskHandle 指向的任务有多个子任务,subTaskIndex 用于指定子任务编号。

  3. 若模型含动态输出,推理时请采用非同步执行任务方式,因为同步执行的任务无法获取到taskHandle。