aclrtProcessHostFunc
aclrtProcessReport
函数功能
异步任务场景下,调用本接口设置超时时间,等待aclrtLaunchCallback接口下发的回调任务执行。同步接口。
本接口需与以下其它接口配合使用,以便实现异步场景下的callback功能:
- 定义并实现回调函数,函数原型为:typedef void (*aclrtCallback)(void *userData);
- 新建线程,在线程函数内,调用aclrtProcessReport接口设置超时时间(需循环调用),等待回调任务执行;
- 调用aclrtSubscribeReport接口建立第2步中的线程和Stream的绑定关系,该Stream下发的回调函数将在绑定的线程中执行;
- 在指定Stream上执行异步任务(例如异步推理任务);
- 调用aclrtLaunchCallback接口在Stream的任务队列中下发回调任务,触发第2步中注册的线程处理回调函数,每调用一次aclrtLaunchCallback接口,就会触发一次回调函数的执行;
- 异步任务全部执行完成后,取消线程注册(aclrtUnSubscribeReport接口)。
函数原型
aclError aclrtProcessReport(int32_t timeout)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| timeout | 输入 | 超时时间,单位为ms。 取值范围: - -1:表示无限等待 - 大于0(不包含0):表示等待的时间 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用流程及示例代码,参见异步模型推理。
父主题: 同步等待
aclrtUnSubscribeReport
函数功能
异步任务场景下,取消线程注册,Stream上的回调函数不再由指定线程处理。同步接口。
本接口需与以下其它接口配合使用,以便实现异步场景下的callback功能:
- 定义并实现回调函数,函数原型为:typedef void (*aclrtCallback)(void *userData);
- 新建线程,在线程函数内,调用aclrtProcessReport接口设置超时时间(需循环调用),等待回调任务执行;
- 调用aclrtSubscribeReport接口建立第2步中的线程和Stream的绑定关系,该Stream下发的回调函数将在绑定的线程中执行;
- 在指定Stream上执行异步任务(例如异步推理任务);
- 调用aclrtLaunchCallback接口在Stream的任务队列中下发回调任务,触发第2步中注册的线程处理回调函数,每调用一次aclrtLaunchCallback接口,就会触发一次回调函数的执行;
- 异步任务全部执行完成后,取消线程注册(aclrtUnSubscribeReport接口)。
函数原型
**aclError**aclrtUnSubscribeReport(uint64_t threadId, aclrtStream stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| threadId | 输入 | 指定线程的ID。 |
| stream | 输入 | 指定Stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用流程及示例代码,参见异步模型推理。
父主题: 同步等待
aclrtSubscribeHostFunc
函数功能
模型中有CPU算子、且调用aclmdlExecuteV2或aclmdlExecuteAsyncV2接口执行模型推理时,调用本接口注册处理Stream上回调函数的线程(线程需由用户自行创建),再配合调用aclrtProcessHostFunc接口触发回调函数、在模型执行之后调用aclrtUnSubscribeHostFunc接口取消注册。同步接口。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
- 支持多次调用aclrtSubscribeHostFunc接口给多个Stream(仅支持同一Device内的多个Stream)注册同一个处理回调函数的线程。
- 为确保Stream内的任务按调用顺序执行,不支持调用aclrtSubscribeHostFunc接口给同一个Stream注册多个处理回调函数的线程。
函数原型
aclError aclrtSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| hostFuncThreadId | 输入 | 指定线程的ID。 |
| exeStream | 输入 | 指定Stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 同步等待
aclrtProcessHostFunc
函数功能
等待指定时间后,触发回调处理,由aclrtSubscribeHostFunc接口指定的线程处理回调。同步接口。
线程需由用户提前自行创建,并自定义线程函数,在线程函数内调用本接口,等待被唤醒后通过系统内部进行算子计算。
Atlas 200/500 A2推理产品,不支持该接口。
函数原型
aclError aclrtProcessHostFunc(int32_t timeout)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| timeout | 输入 | 超时时间,单位为ms。 取值范围: - -1:表示无限等待 - 大于0(不包含0):表示等待的时间 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 同步等待
aclrtUnSubscribeHostFunc
函数功能
与aclrtSubscribeHostFunc接口配合使用,调用模型执行接口后,调用本接口取消线程注册,Stream上的回调函数不再由指定线程处理。同步接口。
Atlas 200/500 A2推理产品,不支持该接口。
函数原型
aclError aclrtUnSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| hostFuncThreadId | 输入 | 指定线程的ID。 |
| exeStream | 输入 | 指定Stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 同步等待
aclrtSetExceptionInfoCallback
函数功能
设置异常回调函数,同步接口。
约束说明
-
您需要在执行异步任务之前,设置异常回调函数,当Device上的任务执行异常时,系统会向用户设置的异常回调函数中传入一个包含任务ID、Stream ID、线程ID、Device ID以及错误码的aclrtExceptionInfo结构体指针,并执行回调函数,用户可以再分别调用aclrtGetTaskIdFromExceptionInfo、aclrtGetStreamIdFromExceptionInfo、aclrtGetThreadIdFromExceptionInfo、aclrtGetDeviceIdFromExceptionInfo、aclrtGetErrorCodeFromExceptionInfo接口获取产生异常的任务ID、Stream ID、线程ID、Device ID以及错误码,便于定位问题。
使用场景****举例:例如,在调用aclopExecuteV2接口前,调用aclrtSetExceptionInfoCallback接口设置异常回调函数,当算子在Device执行异常时,系统会向用户设置的异常回调函数中传入一个包含任务ID、Stream ID、线程ID、Device ID以及错误码的aclrtExceptionInfo结构体指针,并执行回调函数。
-
如果多次设置异常回调函数,以最后一次设置为准。
-
如果想清空回调函数,可调用aclrtSetExceptionInfoCallback接口,将入参设置为空指针。
函数原型
aclError aclrtSetExceptionInfoCallback(aclrtExceptionInfoCallback callback)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| callback | 输入 | 指定要注册的回调函数。 回调函数的函数原型为: typedef void (*aclrtExceptionInfoCallback)(aclrtExceptionInfo *exceptionInfo); |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见AI Core异常信息获取。
父主题: 同步等待
aclrtGetTaskIdFromExceptionInfo
函数功能
获取异常信息中的任务ID,同步接口。该接口与aclrtSetExceptionInfoCallback接口配合使用。
函数原型
uint32_t aclrtGetTaskIdFromExceptionInfo(const aclrtExceptionInfo *info)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| info | 输入 | 异常信息的指针。 在执行任务之前调用aclrtSetExceptionInfoCallback接口,系统会将产生异常的任务ID、Stream ID、线程ID、Device ID存放在aclExceptionInfo结构体中。 |
返回值说明
返回异常信息中的任务ID,返回值为0xFFFFFFFF(以十六进制为例)时表示Device异常。
参考资源
接口调用示例,参见AI Core异常信息获取。
父主题: 同步等待
在线提单