aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTikhomirova, Kseniya <kseniya.tikhomirova@intel.com>2026-04-28 05:09:53 -0700
committerTikhomirova, Kseniya <kseniya.tikhomirova@intel.com>2026-04-28 05:09:53 -0700
commit9b8486e642d520a93732d42a65381ee136beec60 (patch)
tree699eec6a0b0276154a33369782427a07430e08ff
parent5a8767e8d7149281d84dade6640742347ec363fa (diff)
downloadllvm-users/KseniyaTikhomirova/kernel_submit_single_3.tar.gz
llvm-users/KseniyaTikhomirova/kernel_submit_single_3.tar.bz2
llvm-users/KseniyaTikhomirova/kernel_submit_single_3.zip
Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova@intel.com>
-rw-r--r--libsycl/include/sycl/__impl/queue.hpp18
-rw-r--r--libsycl/src/detail/queue_impl.cpp4
2 files changed, 11 insertions, 11 deletions
diff --git a/libsycl/include/sycl/__impl/queue.hpp b/libsycl/include/sycl/__impl/queue.hpp
index 254512fecd86..6b9e24b8f66a 100644
--- a/libsycl/include/sycl/__impl/queue.hpp
+++ b/libsycl/include/sycl/__impl/queue.hpp
@@ -33,18 +33,19 @@ class context;
namespace detail {
class QueueImpl;
-template <typename, typename T> struct CheckFunctionSignature {
+template <typename, typename T> struct CheckFunctionCallOperator {
static_assert(std::integral_constant<T, false>::value,
"Second template parameter is required to be of function type");
};
template <typename F, typename RetT, typename... Args>
-struct CheckFunctionSignature<F, RetT(Args...)> {
+struct CheckFunctionCallOperator<F, RetT(Args...)> {
private:
template <typename T>
- static constexpr auto check(T *) -> typename std::is_same<
- decltype(std::declval<T>().operator()(std::declval<Args>()...)),
- RetT>::type;
+ static constexpr auto check(T *) ->
+ typename std::is_same<decltype(std::declval<std::add_const_t<T>>()
+ .operator()(std::declval<Args>()...)),
+ RetT>::type;
template <typename> static constexpr std::false_type check(...);
@@ -195,10 +196,9 @@ public:
event single_task(const std::vector<event> &depEvents,
const KernelType &kernelFunc) {
static_assert(
- detail::CheckFunctionSignature<std::remove_reference_t<KernelType>,
- void()>::value,
- "sycl::queue::single_task() requires a kernel instead of a command "
- "group");
+ detail::CheckFunctionCallOperator<std::remove_reference_t<KernelType>,
+ void()>::value,
+ "Invalid kernel function signature.");
setKernelParameters(depEvents);
submitSingleTask<KernelName, KernelType>(kernelFunc);
diff --git a/libsycl/src/detail/queue_impl.cpp b/libsycl/src/detail/queue_impl.cpp
index 5d1129ef58bf..447afbff671f 100644
--- a/libsycl/src/detail/queue_impl.cpp
+++ b/libsycl/src/detail/queue_impl.cpp
@@ -32,9 +32,9 @@ static void setKernelLaunchArgs(const detail::UnifiedRangeView &Range,
uint32_t GroupSize[3] = {1, 1, 1};
if (Range.MLocalSize) {
for (size_t I = 0; I < Range.MDims; ++I) {
+ assert(Range.MLocalSize[I] <= std::numeric_limits<uint32_t>::max() &&
+ Range.MLocalSize[I] != 0);
GroupSize[I] = static_cast<uint32_t>(Range.MLocalSize[I]);
- assert(GroupSize[I] && "Local range contains zero size. Causes division "
- "by zero for group range counting.");
}
}