1 #ifndef HeterogeneousCore_CUDAUtilities_launch_h
2 #define HeterogeneousCore_CUDAUtilities_launch_h
6 #include <cuda_runtime.h>
66 template <
typename... Args>
68 static constexpr
size_t arguments_size =
sizeof...(Args);
79 template <
typename Tuple>
88 template <
typename Tuple>
101 template <
typename F,
typename... Args>
102 #if __cplusplus >= 201703L
103 std::enable_if_t<std::is_invocable_r<void,
F, Args&&...>
::value>
105 std::enable_if_t<std::is_void<std::result_of_t<
F && (Args && ...)> >
::value>
109 typename function_type::argument_type_tuple args_copy(
args...);
111 constexpr
auto size = function_type::arguments_size;
112 void const* pointers[
size];
126 template <
typename F,
typename... Args>
127 #if __cplusplus >= 201703L
128 std::enable_if_t<std::is_invocable_r<void,
F, Args&&...>
::value>
130 std::enable_if_t<std::is_void<std::result_of_t<
F && (Args && ...)> >
::value>
134 typename function_type::argument_type_tuple args_copy(
args...);
136 constexpr
auto size = function_type::arguments_size;
137 void const* pointers[
size];
147 #endif // HeterogeneousCore_CUDAUtilities_launch_h
void launch_cooperative(void(*kernel)(), LaunchParameters config)
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t Func __host__ __device__ V value
LaunchParameters(int gridDim, int blockDim, size_t sharedMem=0, cudaStream_t stream=nullptr)
LaunchParameters(dim3 gridDim, dim3 blockDim, size_t sharedMem=0, cudaStream_t stream=nullptr)
const std::complex< double > I
void operator()(void const *ptrs[], Tuple const &t)
__host__ __device__ VT uint32_t size
void launch(void(*kernel)(), LaunchParameters config)
void operator()(void const *ptrs[], Tuple const &t)
#define cudaCheck(ARG,...)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
typename std::tuple_element< i, argument_type_tuple >::type argument_type
std::tuple< Args...> argument_type_tuple