Skip to content

Commit 8aef777

Browse files
committed
[SYCL] Address comment and warning
Signed-off-by: Hu, Peisen <[email protected]>
1 parent ede35b8 commit 8aef777

File tree

1 file changed

+22
-47
lines changed

1 file changed

+22
-47
lines changed

sycl/include/sycl/handler.hpp

Lines changed: 22 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2196,58 +2196,42 @@ class __SYCL_EXPORT handler {
21962196
std::forward<RestT>(Rest)...);
21972197
}
21982198

2199-
template <typename KernelName = detail::auto_name, typename... RestT>
2200-
std::enable_if_t<detail::AreAllButLastReductions<RestT...>::value &&
2201-
(sizeof...(RestT) > 1)>
2202-
parallel_for(range<1> Range, RestT &&...Rest) {
2203-
const auto &KernelObj = (Rest, ...);
2199+
template <typename... RestT> auto property_deduction_helper(RestT &&...Rest) {
2200+
const auto &KernelObj = (std::forward<RestT>(Rest), ...);
22042201
if constexpr (ext::oneapi::experimental::detail::
22052202
HasKernelPropertiesGetMethod<
22062203
decltype(KernelObj)>::value) {
2207-
parallel_for<KernelName>(
2208-
Range, KernelObj.get(ext::oneapi::experimental::properties_tag{}),
2209-
std::forward<RestT>(Rest)...);
2204+
return KernelObj.get(ext::oneapi::experimental::properties_tag{});
22102205
} else {
2211-
parallel_for<KernelName>(Range,
2212-
ext::oneapi::experimental::empty_properties_t{},
2213-
std::forward<RestT>(Rest)...);
2206+
return ext::oneapi::experimental::empty_properties_t{};
22142207
}
22152208
}
22162209

2210+
template <typename KernelName = detail::auto_name, typename... RestT>
2211+
std::enable_if_t<detail::AreAllButLastReductions<RestT...>::value &&
2212+
(sizeof...(RestT) > 1)>
2213+
parallel_for(range<1> Range, RestT &&...Rest) {
2214+
parallel_for<KernelName>(
2215+
Range, property_deduction_helper(std::forward<RestT>(Rest)...),
2216+
std::forward<RestT>(Rest)...);
2217+
}
2218+
22172219
template <typename KernelName = detail::auto_name, typename... RestT>
22182220
std::enable_if_t<detail::AreAllButLastReductions<RestT...>::value &&
22192221
(sizeof...(RestT) > 1)>
22202222
parallel_for(range<2> Range, RestT &&...Rest) {
2221-
const auto &KernelObj = (Rest, ...);
2222-
if constexpr (ext::oneapi::experimental::detail::
2223-
HasKernelPropertiesGetMethod<
2224-
decltype(KernelObj)>::value) {
2225-
parallel_for<KernelName>(
2226-
Range, KernelObj.get(ext::oneapi::experimental::properties_tag{}),
2227-
std::forward<RestT>(Rest)...);
2228-
} else {
2229-
parallel_for<KernelName>(Range,
2230-
ext::oneapi::experimental::empty_properties_t{},
2231-
std::forward<RestT>(Rest)...);
2232-
}
2223+
parallel_for<KernelName>(
2224+
Range, property_deduction_helper(std::forward<RestT>(Rest)...),
2225+
std::forward<RestT>(Rest)...);
22332226
}
22342227

22352228
template <typename KernelName = detail::auto_name, typename... RestT>
22362229
std::enable_if_t<detail::AreAllButLastReductions<RestT...>::value &&
22372230
(sizeof...(RestT) > 1)>
22382231
parallel_for(range<3> Range, RestT &&...Rest) {
2239-
const auto &KernelObj = (Rest, ...);
2240-
if constexpr (ext::oneapi::experimental::detail::
2241-
HasKernelPropertiesGetMethod<
2242-
decltype(KernelObj)>::value) {
2243-
parallel_for<KernelName>(
2244-
Range, KernelObj.get(ext::oneapi::experimental::properties_tag{}),
2245-
std::forward<RestT>(Rest)...);
2246-
} else {
2247-
parallel_for<KernelName>(Range,
2248-
ext::oneapi::experimental::empty_properties_t{},
2249-
std::forward<RestT>(Rest)...);
2250-
}
2232+
parallel_for<KernelName>(
2233+
Range, property_deduction_helper(std::forward<RestT>(Rest)...),
2234+
std::forward<RestT>(Rest)...);
22512235
}
22522236

22532237
template <typename KernelName = detail::auto_name, int Dims,
@@ -2275,18 +2259,9 @@ class __SYCL_EXPORT handler {
22752259
std::enable_if_t<detail::AreAllButLastReductions<RestT...>::value &&
22762260
(sizeof...(RestT) > 1)> // variant with reductions
22772261
parallel_for(nd_range<Dims> Range, RestT &&...Rest) {
2278-
const auto &KernelObj = (Rest, ...);
2279-
if constexpr (ext::oneapi::experimental::detail::
2280-
HasKernelPropertiesGetMethod<
2281-
decltype(KernelObj)>::value) {
2282-
parallel_for<KernelName>(
2283-
Range, KernelObj.get(ext::oneapi::experimental::properties_tag{}),
2284-
std::forward<RestT>(Rest)...);
2285-
} else {
2286-
parallel_for<KernelName>(Range,
2287-
ext::oneapi::experimental::empty_properties_t{},
2288-
std::forward<RestT>(Rest)...);
2289-
}
2262+
parallel_for<KernelName>(
2263+
Range, property_deduction_helper(std::forward<RestT>(Rest)...),
2264+
std::forward<RestT>(Rest)...);
22902265
}
22912266

22922267
template <typename KernelName = detail::auto_name, int Dims,

0 commit comments

Comments
 (0)