Repository navigation
Pass device pointers to kernels as global LLVMPtrs - #711
Merged
Merged
Conversation
ZePtr kernel arguments were converted to Ptr, an addrspace(0) pointer,
which SPIR-V treats as private memory: stores through `pointer(a)` in a
kernel were lost for every buffer type. Convert them to
LLVMPtr{T,AS.CrossWorkgroup} instead, like the pointer oneDeviceArray wraps.
Fixes #458
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #711 +/- ##
==========================================
- Coverage 84.08% 83.48% -0.60%
==========================================
Files 52 51 -1
Lines 4386 4263 -123
==========================================
- Hits 3688 3559 -129
- Misses 698 704 +6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
ZePtrkernel arguments were converted toPtr, which lowers to an addrspace(0) pointer. In SPIR-V that address space is private memory, so a kernel storing throughpointer(a)never wrote to the array, regardless of the buffer type:They are now passed as
LLVMPtr{T,AS.CrossWorkgroup}, matching the pointeroneDeviceArraywraps. Kernels with an argument explicitly typed::Ptr{T}no longer match aZePtr, but such kernels never worked.The
NEO#172test passes an explicitPtrnow, so that it keeps exercising the integer-to-pointer conversion it was written for.The original broadcast reproducer from the issue already works on current main.
Fixes #458