[hip] implement the hipExtLaunchMultiKernelMultiDevice API (#1165)
* [hip] implement the hipExtLaunchMultiKernelMultiDevice API * add a guard to check the HCC version for acquire_locked_hsa_queue() API which was introdued in HCC for ROCm 2.5 * modified code based on the requested changes * changes to lock all streams before launching kernels for each device and unlock them after the dispatches * check each stream to be valid before starting to lock all the streams
Este commit está contenido en:
cometido por
Maneesh Gupta
padre
d492f1fd6b
commit
96dc74897d
@@ -270,14 +270,14 @@ static inline __device__ void printf(const char* format, All... all) {}
|
||||
|
||||
#if defined __HCC_CPP__
|
||||
extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, dim3 grid, dim3 block,
|
||||
grid_launch_parm* lp, const char* kernelNameStr);
|
||||
grid_launch_parm* lp, const char* kernelNameStr, bool lockAcquired = 0);
|
||||
extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, dim3 grid, size_t block,
|
||||
grid_launch_parm* lp, const char* kernelNameStr);
|
||||
grid_launch_parm* lp, const char* kernelNameStr, bool lockAcquired = 0);
|
||||
extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, size_t grid, dim3 block,
|
||||
grid_launch_parm* lp, const char* kernelNameStr);
|
||||
grid_launch_parm* lp, const char* kernelNameStr, bool lockAcquired = 0);
|
||||
extern hipStream_t ihipPreLaunchKernel(hipStream_t stream, size_t grid, size_t block,
|
||||
grid_launch_parm* lp, const char* kernelNameStr);
|
||||
extern void ihipPostLaunchKernel(const char* kernelName, hipStream_t stream, grid_launch_parm& lp);
|
||||
grid_launch_parm* lp, const char* kernelNameStr, bool lockAcquired = 0);
|
||||
extern void ihipPostLaunchKernel(const char* kernelName, hipStream_t stream, grid_launch_parm& lp, bool unlockPostponed = 0);
|
||||
|
||||
#if GENERIC_GRID_LAUNCH == 0
|
||||
//#warning "Original hipLaunchKernel defined"
|
||||
|
||||
@@ -77,6 +77,7 @@ class kernargs_size_align {
|
||||
public:
|
||||
std::size_t size(std::size_t n) const;
|
||||
std::size_t alignment(std::size_t n) const;
|
||||
const void* getHandle() const {return handle;};
|
||||
private:
|
||||
const void* handle;
|
||||
friend kernargs_size_align program_state::get_kernargs_size_align(std::uintptr_t);
|
||||
|
||||
Referencia en una nueva incidencia
Block a user