Function: stream_wait_event
Applicability
|
Product |
Supported |
|---|---|
|
Atlas 350 Accelerator Card |
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
|
|
√ |
Description
Blocks the running of a specified stream or multiple streams until the specified event is complete. This API is asynchronous.
All subsequent tasks submitted to the stream can be executed only after all tasks captured by the event are complete. For more details, see acl.rt.record_event.
Prototype
- C Prototype
1aclError aclrtStreamWaitEvent(aclrtStream stream, aclrtEvent event)
- Python Function
1ret = acl.rt.stream_wait_event(stream, event)
Parameters
|
Parameter |
Description |
|---|---|
|
stream |
Int, pointer address of the stream that needs to wait for the event to complete. Pass 0 if the default stream is used. |
|
event |
Int, pointer address of the event to be waited for. |
Return Value
|
Return Value |
Description |
|---|---|
|
ret |
Int, error code. 0 on success; else, failure. |
Restrictions
- This API is asynchronous. The API call delivers a task rather than executes a task. After this API is called, call the synchronization API (for example, acl.rt.synchronize_stream) to ensure that the task is complete.
- acl.rt.record_event and acl.rt.stream_wait_event are used in conjunction for synchronization between streams. When acl.rt.record_event is called, an event resource is allocated. After acl.rt.stream_wait_event is called, acl.rt.reset_event should be called to free the event resource in a timely manner.
API call sequence: acl.rt.create_event-->acl.rt.record_event-->acl.rt.stream_wait_event-->acl.rt.reset_event
- After initialization by calling acl.init in a process, you can call acl.rt.set_op_wait_timeout to set the timeout interval. Tasks delivered by calling acl.rt.stream_wait_event in the process can wait within the configured timeout interval. If the wait time exceeds the configured timeout interval, an error is returned.
The acl.rt.stream_wait_event API is an asynchronous API. If the API is successfully called, the task is successfully delivered but not executed. Therefore, if the waiting time exceeds the configured timeout interval, an error is returned after the acl.rt.synchronize_stream API is called.