昇腾社区首页
中文
注册

aclrtRecordEvent

产品支持情况

产品

是否支持

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

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

Atlas 200/300/500 推理产品

功能说明

在Stream中记录一个Event。

本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保任务已执行完成,否则可能会导致训练或推理等业务异常、Device断链掉卡等未知情况。

aclrtRecordEvent接口与aclrtStreamWaitEvent接口配合使用时,主要用于多Stream之间同步等待的场景,在调用aclrtRecordEvent接口时,系统内部会申请Event资源,在调用aclrtStreamWaitEvent接口之后,请及时调用aclrtResetEvent接口释放Event资源,若多个Stream等同一个Event,则需要多个Stream都调用aclrtStreamWaitEvent接口之后,再调用aclrtResetEvent接口释放Event资源。接口调用顺序:创建Event(例如aclrtCreateEvent-->aclrtRecordEvent-->aclrtStreamWaitEvent-->aclrtResetEvent

调用aclrtRecordEvent接口时,AscendCL会捕获当前Stream上已下发的任务,并记录到Event事件中,因此后续若调用aclrtQueryEventStatusaclrtStreamWaitEvent接口时,会检查或等待该Event事件中所捕获的任务都已经完成。

另外,对于使用aclrtCreateEventExWithFlag创建的Event:

  • aclrtRecordEvent接口支持对同一个Event多次record实现Event复用,每次Record会重新捕获当前Stream上已下发的任务,并覆盖保存到Event中。在调用aclrtStreamWaitEvent接口时,会使用最近一次Event中所保存的任务,且不会被后续的aclrtRecordEvent调用影响。
  • 在首次调用aclrtRecordEvent接口前,由于Event中没有任务,因此调用aclrtQueryEventStatus接口时会返回ACL_EVENT_RECORDED_STATUS_COMPLETE。

函数原型

aclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream)

参数说明

参数名

输入/输出

说明

event

输入

待记录的Event。

stream

输入

指定Stream。例如,Stream2等Stream1的场景,此处配置为Stream1。

如果使用默认Stream,此处设置为NULL。

返回值说明

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