开发者
下载

aclrtStreamWaitEventWithFlag

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

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

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

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

功能说明

阻塞指定Stream的运行,直到指定的Event完成。异步接口。

该接口是在接口aclrtStreamWaitEventaclrtStreamWaitEventWithTimeout基础上进行了增强,支持用户配置具体的超时时间,同时还可以配置flag,不同的flag用于不同的使用场景。

函数原型

1
aclError aclrtStreamWaitEventWithFlag(aclrtStream stream, aclrtEvent event, uint32_t timeout, uint32_t flag)

参数说明

参数名

输入/输出

说明

stream

输入

指定Stream。类型定义请参见aclrtStream

当flag为ACL_EVENT_WAIT_EXTERNAL时,仅支持在图捕获(ACL Graph)场景下使用,且stream参数处指定的Stream必须是正处于捕获状态。

event

输入

需等待的Event。类型定义请参见aclrtEvent

当flag为ACL_EVENT_WAIT_EXTERNAL时,event仅支持通过aclrtCreateEventExWithFlag接口创建,且flag必须为ACL_EVENT_SYNC。其他flag或其他创建Event的接口均不支持。

timeout

输入

超时时间,单位为秒。

当flag为ACL_EVENT_WAIT_DEFAULT时,功能等价于aclrtStreamWaitEventWithTimeout接口,但本接口timeout参数类型为uint32_t。

当flag为ACL_EVENT_WAIT_EXTERNAL时,timeout参数仅支持设置为0,表示永不超时。

flag

输入

指定等待动作的行为。flag取值如下:

  • 当flag为ACL_EVENT_WAIT_DEFAULT时,表示默认标记,适用于普通场景,等价于aclrtStreamWaitEventWithTimeout接口。
  • 当flag为ACL_EVENT_WAIT_EXTERNAL时,图捕获场景专用,当用户正在把Stream上的任务捕获成计算图时,带上这个flag,表示本次等待一个图之外的事件,用于实现图和外部Stream之间做同步、以及实现图和图之间做同步。

宏定义如下:

#define ACL_EVENT_WAIT_DEFAULT 0x0U
#define ACL_EVENT_WAIT_EXTERNAL 0x01U

返回值说明

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

约束说明

当flag为ACL_EVENT_WAIT_EXTERNAL时,存在如下约束:

  • 对于同一个图,在图捕获过程中,同一event不允许同时进行Record和Wait操作。
  • 若event在通过本接口记录之前已被aclrtRecordEvent记录过,则本接口返回错误。