SyclEvent deleter no longer waits #751
Merged
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.hpp
file that provides function tosubmit
host_task
to decrement reference counts for eachPython object passed to one, gated by passed event references.
Host task is submitted to
sycl::queue
behind theQRef
argument.dpctl.SyclQueue.submit
changes 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.SyclEvent
objectreturned by
SyclQueue.submit
. To avoid GC-ing kernel argumentsbefore kernel completes execution, deleter of
SyclEvent
has tocall
SyclEvent.wait
.With this PR
SyclQueue.submit
increments 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
args
attribute. This is nowdeprecated and will be removed.