aclrtRecordEvent
函数功能
在Stream中记录一个Event。本接口被调用时,AscendCL会捕获当前Stream上已下发的任务,并记录到Event事件中,因此后续若调用aclrtQueryEventStatus或aclrtStreamWaitEvent接口时,会检查或等待该Event事件中所捕获的任务都已经完成。
约束说明
- 该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保任务已执行完成。
- aclrtRecordEvent接口与aclrtStreamWaitEvent接口配合使用时,主要用于多Stream之间同步的场景,在调用aclrtRecordEvent接口时,系统内部会申请Event资源,在调用aclrtStreamWaitEvent接口之后,请及时调用aclrtResetEvent接口释放Event资源。
接口调用顺序:aclrtCreateEvent-->aclrtRecordEvent-->aclrtStreamWaitEvent-->aclrtResetEvent
- 由于在调用aclrtRecordEvent接口,系统内部会申请Event资源,因此会受Event数量的限制,具体如下:
Atlas 200/300/500 推理产品,单个Device上最多支持1023个Event。
Atlas 推理系列产品(Ascend 310P处理器),单个Device上最多支持1023个Event。
Atlas 200I/500 A2推理产品,单个Device上最多支持65535个Event。
Atlas 训练系列产品,单个Device上最多支持65535个Event。
Atlas A2训练系列产品,单个Device上最多支持65535个Event。
函数原型
aclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
event |
输入 |
待记录的Event。 |
stream |
输入 |
将指定Event记录在指定的Stream中。 如果使用默认Stream,此处设置为NULL。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
- 接口调用流程,参见多Stream时的同步等待流程。
- 接口调用示例,参见Event的同步等待示例代码、Stream间任务的同步等待示例代码。
父主题: Event管理