文档
注册

aclrtLaunchCallback

函数功能

异步任务场景下,在Stream的任务队列中下发一个回调任务,系统内部在执行到该回调任务时,会在Stream上注册的线程(通过aclrtSubscribeReport接口注册的线程)中执行回调函数。异步接口。

本接口需与以下其它接口配合使用,以便实现异步场景下的callback功能:
  1. 定义并实现回调函数,函数原型为:typedef void (*aclrtCallback)(void *userData);
  2. 新建线程,在线程函数内,调用aclrtProcessReport接口设置超时时间(需循环调用),等待回调任务执行;
  3. 调用aclrtSubscribeReport接口建立第2步中的线程和Stream的绑定关系,该Stream下发的回调函数将在绑定的线程中执行;
  4. 在指定Stream上执行异步任务(例如异步推理任务);
  5. 调用aclrtLaunchCallback接口在Stream的任务队列中下发回调任务,触发第2步中注册的线程处理回调函数,每调用一次aclrtLaunchCallback接口,就会触发一次回调函数的执行;
  6. 异步任务全部执行完成后,取消线程注册(aclrtUnSubscribeReport接口)。

约束说明

该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保任务已执行完成。

函数原型

aclError aclrtLaunchCallback(aclrtCallback fn, void *userData, aclrtCallbackBlockType blockType, aclrtStream stream)

参数说明

参数名

输入/输出

说明

fn

输入

指定要增加的回调函数。

回调函数的函数原型为:

typedef void (*aclrtCallback)(void *userData)

userData

输入

待传递给回调函数的用户数据的指针。

blockType

输入

指定回调函数调用是否阻塞Device运行。

typedef enum aclrtCallbackBlockType {
    ACL_CALLBACK_NO_BLOCK,  //非阻塞,Atlas 200/300/500 推理产品不支持该选项,该选项预留
    ACL_CALLBACK_BLOCK,  //阻塞
} aclrtCallbackBlockType;

stream

输入

指定Stream。

返回值说明

返回0表示成功,返回其它值表示失败。

参考资源

接口调用流程及示例代码,参见异步模型推理

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词