-
Notifications
You must be signed in to change notification settings - Fork 125
[Command-buffer][L0] Reset sync-point events #965
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Command-buffer][L0] Reset sync-point events #965
Conversation
The L0 events used to implement UR sync-points in a command-buffer aren't reset after the first execution. Leaving them in a signalled state before subsequent submissions of the UR command-buffer. This patch resets the L0 events used as UR command-buffer sync-points to the non-signalled state, by appending event reset commands to the end of the user defined command-list. There is also a reset added for the UR command-buffer wait event that is signalled when the wait list dependencies of `urCommandBufferEnqueueExp` are met. Additionally this patch removes the host scope flag from being set on L0 events created by the UR command-buffer, as we never signal/reset them from host, only device.
The Unified Runtime sync-points used to represent SYCL-Graph edges are not correctly implemented for the Level Zero adapter. The L0 events used to implement them are not reset to the non-signalled state after an enqueue of the graph. Fixed in the UR L0 adapter change oneapi-src/unified-runtime#965 which resets the UR events to the non-signalled state at the end of the L0 command-list.
Rather than having a command-list wide barrier and separate signal command, have a single barrier command which signals the UR command-buffer signal event and waits on the events that correspond to sync-points. Co-authored-by: Pablo Reble <pablo.reble@intel.com>
c8fa009
to
6523932
Compare
thanks @EwanC . Please check the failures in the intel/llvm patch |
I've had a look through these, and I think they are unrelated. See intel/llvm#11553 (comment) for rationale. So I'll take this PR out of draft. |
thanks @EwanC . Please check the comment in intel/llvm#11553 (comment) to get the results clean. Once that's done, we can merge, as changes look good. |
Testing all green on matching DPC++ PR intel/llvm#11553 now |
The [Unified Runtime sync-points](https://oneapi-src.github.io/unified-runtime/core/EXP-COMMAND-BUFFER.html#sync-points) used to represent SYCL-Graph edges have a bug in the implementation of the Level Zero adapter. The L0 events used to implement the sync-points are not reset to the non-signaled state after an enqueue of the graph. Fixed in the UR L0 adapter change oneapi-src/unified-runtime#965 which resets the UR events to the non-signaled state at the end of the L0 command-list.
The L0 events used to implement UR sync-points in a command-buffer aren't reset after the first execution. Leaving them in a signaled state before subsequent submissions of the UR command-buffer.
This patch resets the L0 events used as UR command-buffer sync-points to the non-signaled state, by appending event reset commands to the end of the user defined command-list. There is also a reset added for the UR command-buffer wait event that is signaled when the wait list dependencies of
urCommandBufferEnqueueExp
are met.Additionally this patch removes the host scope flag from being set on L0 events created by the UR command-buffer, as we never signal/reset them from host, only device.
Companion DPC++ PR - intel/llvm#11553