昇腾社区首页
中文
注册
开发者
下载

aclrtLaunchHostFunc

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

功能说明

在Stream的任务队列中下发一个回调任务,系统内部在执行到该回调任务时,会在Stream上注册的线程(该线程在本接口内部创建并注册)中执行回调函数,并且回调任务默认阻塞本Stream上后续任务的执行。异步接口。

本接口可用于实现异步场景下的callback功能,与另一套实现异步场景下的callback功能接口(aclrtLaunchCallbackaclrtSubscribeReportaclrtProcessReportaclrtUnSubscribeReport)的差别在于:使用aclrtLaunchCallback等接口时,Stream上注册的线程需由用户自行创建并通过aclrtSubscribeReport接口注册,另外也可以指定回调任务是否阻塞本Stream上后续任务的执行。

对于同一个Stream,两套实现异步场景下的callback功能的接口不能混用,否则可能出现异常。

函数原型

aclError aclrtLaunchHostFunc(aclrtStream stream, aclrtHostFunc fn, void *args)

参数说明

参数名

输入/输出

说明

stream

输入

指定执行回调任务的Stream。

fn

输入

指定要增加的回调函数。

回调函数的函数原型为:

typedef void (*aclrtHostFunc)(void *args)

args

输入

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

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError

约束说明

  • 回调函数涉及共享资源(例如锁),因此在使用回调函数需慎重,不应该调用资源申请、资源释放、Stream同步、Device同步、任务下发、任务终止等接口,否则可能导致错误或死锁。
  • 基于捕获方式构建模型运行实例的场景下(参见aclmdlRICaptureBegin接口),不支持调用本接口。