异步任务场景下,在Stream的任务队列中下发一个回调任务,系统内部在执行到该回调任务时,会在Stream上注册的线程(通过aclrtSubscribeReport接口注册的线程)中执行回调函数。异步接口。
该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,需调用同步等待接口(例如,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表示成功,返回其它值表示失败。
接口调用流程及示例代码,参见异步模型推理。