SyclEvent deleter no longer waits#751
Merged
oleksandr-pavlyk merged 5 commits intomasterfrom Feb 1, 2022
Merged
Conversation
|
View rendered docs @ https://intelpython.github.io/dpctl/pulls/751/index.html |
Collaborator
cc0aee9 to
83dd0f4
Compare
Added _host_task_utils.hpp file that provides function to submit host task to decrement reference count for each Python object passed to one gated by passed event references. Host task is submitted to sycl::queue behind the given QRef. SyclQueue.submit changes the mechanism by which it ensures that Python objects (and memory they hold) that the kernel works on are not GC collected before the kernel completes its execution. We used to store reference to arguments in the SyclEvent object returned by SyclQueue.submit. To avoid GC-ing kernel arguments before kernel completes execution, deleter of SyclEvent has to call `SyclEvent.wait`. With this PR `SyclQueue.submit` increments reference counts of arguments after submission, then schedules a host task on the same queue, dependent on the kernel event, which aquires GIL and decrements reference counts. After this change the SyclEven.__dealloc__ no longer has to wait. It also no longer needs to store args attribute. This is now deperecated and will be removed.
83dd0f4 to
8effe77
Compare
|
Deleted rendered PR docs from intelpython.github.com/dpctl, latest should be updated shortly. 🤞 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added
dpctl/_host_task_utils.hppfile that provides function tosubmit
host_taskto decrement reference counts for eachPython object passed to one, gated by passed event references.
Host task is submitted to
sycl::queuebehind theQRefargument.dpctl.SyclQueue.submitchanges the mechanism by which it ensures thatPython objects (and memory they hold) that the kernel works on
are not GC collected before the kernel completes its execution.
We used to store reference to arguments in the
dpctl.SyclEventobjectreturned by
SyclQueue.submit. To avoid GC-ing kernel argumentsbefore kernel completes execution, deleter of
SyclEventhas tocall
SyclEvent.wait.With this PR
SyclQueue.submitincrements reference counts ofarguments after submission, then schedules a host task on the same
queue, dependent on the kernel event, which acquires GIL and
decrements reference counts.
After this change the
SyclEven.__dealloc__no longer has to wait.It also no longer needs to store
argsattribute. This is nowdeprecated and will be removed.