Skip to content

Commit ef792c6

Browse files
[SYCL] Fix handler::set_arg for local_accessor (#7313)
Added missing `setArgHelper` overload for `local_accessor`.
1 parent 1a0d7f1 commit ef792c6

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

sycl/include/sycl/handler.hpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -465,22 +465,35 @@ class __SYCL_EXPORT handler {
465465

466466
void setArgsHelper(int) {}
467467

468-
// setArgHelper for local accessor argument.
469-
template <typename DataT, int Dims, access::mode AccessMode,
470-
access::placeholder IsPlaceholder>
471-
void setArgHelper(int ArgIndex,
472-
accessor<DataT, Dims, AccessMode, access::target::local,
473-
IsPlaceholder> &&Arg) {
474-
detail::LocalAccessorBaseHost *LocalAccBase =
475-
(detail::LocalAccessorBaseHost *)&Arg;
468+
void setLocalAccessorArgHelper(int ArgIndex,
469+
detail::LocalAccessorBaseHost &LocalAccBase) {
476470
detail::LocalAccessorImplPtr LocalAccImpl =
477-
detail::getSyclObjImpl(*LocalAccBase);
471+
detail::getSyclObjImpl(LocalAccBase);
478472
detail::LocalAccessorImplHost *Req = LocalAccImpl.get();
479473
MLocalAccStorage.push_back(std::move(LocalAccImpl));
480474
MArgs.emplace_back(detail::kernel_param_kind_t::kind_accessor, Req,
481475
static_cast<int>(access::target::local), ArgIndex);
482476
}
483477

478+
// setArgHelper for local accessor argument (legacy accessor interface)
479+
template <typename DataT, int Dims, access::mode AccessMode,
480+
access::placeholder IsPlaceholder>
481+
void setArgHelper(int ArgIndex,
482+
accessor<DataT, Dims, AccessMode, access::target::local,
483+
IsPlaceholder> &&Arg) {
484+
#ifndef __SYCL_DEVICE_ONLY__
485+
setLocalAccessorArgHelper(ArgIndex, Arg);
486+
#endif
487+
}
488+
489+
// setArgHelper for local accessor argument (up to date accessor interface)
490+
template <typename DataT, int Dims>
491+
void setArgHelper(int ArgIndex, local_accessor<DataT, Dims> &&Arg) {
492+
#ifndef __SYCL_DEVICE_ONLY__
493+
setLocalAccessorArgHelper(ArgIndex, Arg);
494+
#endif
495+
}
496+
484497
// setArgHelper for non local accessor argument.
485498
template <typename DataT, int Dims, access::mode AccessMode,
486499
access::target AccessTarget, access::placeholder IsPlaceholder>

0 commit comments

Comments
 (0)