23 #ifndef HIP_INCLUDE_HIP_HIP_EXT_H
24 #define HIP_INCLUDE_HIP_HIP_EXT_H
25 #include "hip/hip_runtime.h"
26 #if defined(__cplusplus)
28 #include <type_traits>
69 uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ,
70 uint32_t localWorkSizeX, uint32_t localWorkSizeY,
71 uint32_t localWorkSizeZ,
size_t sharedMemBytes,
72 hipStream_t hStream,
void** kernelParams,
void** extra,
73 hipEvent_t startEvent =
nullptr,
74 hipEvent_t stopEvent =
nullptr,
82 uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ,
83 uint32_t localWorkSizeX, uint32_t localWorkSizeY,
84 uint32_t localWorkSizeZ,
size_t sharedMemBytes,
85 hipStream_t hStream,
void** kernelParams,
void** extra,
86 hipEvent_t startEvent =
nullptr,
87 hipEvent_t stopEvent =
nullptr)
90 #if defined(__cplusplus)
113 dim3 dimBlocks,
void** args,
size_t sharedMemBytes,
114 hipStream_t stream, hipEvent_t startEvent,
115 hipEvent_t stopEvent,
int flags);
138 template <
typename... Args,
typename F = void (*)(Args...)>
139 inline void hipExtLaunchKernelGGL(F kernel,
const dim3& numBlocks,
const dim3& dimBlocks,
140 std::uint32_t sharedMemBytes, hipStream_t stream,
141 hipEvent_t startEvent, hipEvent_t stopEvent, std::uint32_t flags,
143 constexpr
size_t count =
sizeof...(Args);
144 auto tup_ = std::tuple<Args...>{args...};
145 auto tup = validateArgsCountType(kernel, tup_);
147 pArgs<0>(tup, _Args);
149 auto k =
reinterpret_cast<void*
>(kernel);
150 hipExtLaunchKernel(k, numBlocks, dimBlocks, _Args, sharedMemBytes, stream, startEvent,
151 stopEvent, (
int)flags);
154 #endif // defined(__cplusplus)
160 #endif // #iidef HIP_INCLUDE_HIP_HIP_EXT_H