[SYCL] Fix launching a kernel with a default constructed local accessor #13382
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.
According to 4.7.6.11.1. Interface for local accessors, passing a default constructed local accessor to a kernel function is allowed, as long as no accesses to the data elements are made.
When default constructing a
local_accessor
, it will default construct itslocal_accessor_base
llvm/sycl/include/sycl/accessor.hpp
Lines 2803 to 2805 in 3f841ff
leading its
LocalAccessorImplHost
to be constructed withMDims == 0
. When setting the kernel arguments corresponding to the local accessor, this causedpiKernelSetArg
to be called witharg_size == 0
, which then causes an error. This PR fixes this by checking ifMDims
would be 0 and then setting an appropriate value.