asc.language.fwk.TPipe.fetch_event_id

TPipe.fetch_event_id(event: HardEvent = HardEvent.V_S) int

根据HardEvent(硬件类型的同步事件)获取相应可用的TEventID,此接口不会申请TEventID,仅提供可用的TEventID。

对应的Ascend C函数原型

template <HardEvent evt>
__aicore__ inline TEventID TPipe::FetchEventID()
__aicore__ inline TEventID TPipe::FetchEventID(HardEvent evt)

参数说明

  • event:HardEvent硬件同步类型。

返回值说明

TEventID。

约束说明

相比于alloc_event_id,fetch_event_id适用于临时使用ID的场景,获取ID后,不会对ID进行占用。在一些复杂的使用场景下,需要开发者自行保证使用正确。 比如相同流水连续调用set_flag/wait_flag,如果两次传入的ID都是使用fetch_event_id获取的,因为两者ID相同会出现程序卡死等未定义行为,这时推荐用户使用alloc_event_id。

调用示例

event_id = asc.get_tpipe_ptr().fetch_event_id(asc.HardEvent.V_S)
asc.set_flag(asc.HardEvent.V_S, event_id)
asc.wait_flag(asc.HardEvent.V_S, event_id)