29 #include <type_traits>
33 inline namespace _V1 {
71 static_assert(std::integral_constant<T, false>::value,
72 "Second template parameter is required to be of function type");
75 template <
typename F,
typename RetT,
typename... Args>
79 static constexpr
auto check(T *) ->
typename std::is_same<
80 decltype(std::declval<T>().
operator()(std::declval<Args>()...)),
83 template <
typename>
static constexpr std::false_type check(...);
85 using type = decltype(check<F>(0));
88 static constexpr
bool value = type::value;
91 template <
typename F,
typename... Args>
102 typename KernelType,
typename LambdaArgType,
103 typename std::enable_if_t<std::is_same_v<LambdaArgType, void>> * =
nullptr>
105 return check_kernel_lambda_takes_args<KernelType, kernel_handler>();
109 typename KernelType,
typename LambdaArgType,
110 typename std::enable_if_t<!std::is_same_v<LambdaArgType, void>> * =
nullptr>
117 template <
typename KernelType,
typename LambdaArgType =
void>
120 isKernelLambdaCallableWithKernelHandlerImpl<KernelType, LambdaArgType>();
125 template <
typename KernelType>
126 typename std::enable_if_t<KernelLambdaHasKernelHandlerArgT<KernelType>::value>
132 template <
typename KernelType>
133 typename std::enable_if_t<!KernelLambdaHasKernelHandlerArgT<KernelType>::value>
138 template <
typename ArgType,
typename KernelType>
139 typename std::enable_if_t<
146 template <
typename ArgType,
typename KernelType>
147 typename std::enable_if_t<
163 template <
class KernelType,
class KernelArgType,
int Dims>
165 using IDBuilder = sycl::detail::Builder;
174 char *
getPtr()
override {
return reinterpret_cast<char *
>(&MKernel); }
virtual char * getPtr()=0
virtual ~HostKernelBase()=default
HostKernel(KernelType Kernel)
Command group handler class.
std::enable_if_t< KernelLambdaHasKernelHandlerArgT< KernelType, ArgType >::value > runKernelWithArg(KernelType KernelName, ArgType Arg)
std::enable_if_t< KernelLambdaHasKernelHandlerArgT< KernelType >::value > runKernelWithoutArg(KernelType KernelName)
constexpr bool isKernelLambdaCallableWithKernelHandlerImpl()
CGType
Type of the command group.
static constexpr bool check_kernel_lambda_takes_args()
constexpr static bool value