函数:record_event
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
在Stream中记录一个Event。本接口被调用时,会捕获当前Stream上已下发的任务并记录到Event事件中,因此后续若调用acl.rt.query_event_status或acl.rt.stream_wait_event接口时,会检查或等待该Event事件中所捕获的任务都已经完成。
对于使用acl rt.create_event_ex_with_flag创建的Event:
- 本接口支持对同一个Event多次record实现Event复用,每次Record会重新捕获当前Stream上已下发的任务,并覆盖保存到Event中。在调用acl.rt.stream_wait_event接口时,会使用最近一次Event中所保存的任务,且不会被后续的acl.rt.record_event调用影响。
- 在首次调用本接口前,由于Event中没有任务,因此调用acl.rt.query_event_status接口时会返回“ACL_EVENT_RECORDED_STATUS_COMPLETE”。
函数原型
- C函数原型
1
aclError aclrtRecordEvent(aclrtEvent event, aclrtStream stream)
- python函数
1
ret = acl.rt.record_event(event, stream)
参数说明
参数名 |
说明 |
---|---|
event |
int,待记录的Event的指针地址。 |
stream |
int,将该Event记录在指定的Stream(指针地址)中,如果使用默认Stream,此处设置为0。 |
返回值说明
返回值 |
说明 |
---|---|
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
- 该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,需调用同步等待接口(例如,acl.rt.synchronize_stream)确保任务已执行完成。
- acl.rt.record_event接口与acl.rt.stream_wait_event接口配合使用时,主要用于多Stream之间同步的场景,在调用acl.rt.record_event接口时,系统内部会申请Event资源,在调用acl.rt.stream_wait_event接口之后,请及时调用acl.rt.reset_event接口释放Event资源。
接口调用顺序:acl.rt.create_event-->acl.rt.record_event-->acl.rt.stream_wait_event-->acl.rt.reset_event