[SYCL] Fix memory leak for sub-devices #20370
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.
Current
device_impl
implementation assumes shared ownership and manages the handle viaurRetain
/urRelease
in constructor/destructor. Whenever we get temporary device handles viaurDeviceGet
/urDevicePartition
(which implicitly return device handle withrefcount == 1
) and wrap those handles indevice_impl
, we have to release temporary handles atthe end of scope to avoid memory leak.
It's done here for devices:
llvm/sycl/source/detail/platform_impl.cpp
Lines 560 to 563 in 6b29cf1
Same needs to be done when we create sub-devices. But currently we were missing release calls for temporary handles after creating
device_impl
objects wrapping those handles. This PR fixes that issue by releasing temporary handles at the end of the scope.