From 43c687a5e89a5356fcba6e4f3500128155a2f3fc Mon Sep 17 00:00:00 2001 From: Joseph Greathouse Date: Tue, 17 Mar 2020 03:32:48 -0500 Subject: [PATCH] Fix occupancy calculations API on NVCC (#1941) NVCC warned if you tried to use hipOccupancyMaxActiveBlocksPerMultiprocessor because when passing in a device function pointer, "const void* func" was insufficient to describe it accurately. Adding a C++ templated class type definition for this function. [ROCm/clr commit: 7f49e472179f27456e3b74a196b4561d602f6942] --- .../hipamd/include/hip/nvcc_detail/hip_runtime_api.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/clr/hipamd/include/hip/nvcc_detail/hip_runtime_api.h b/projects/clr/hipamd/include/hip/nvcc_detail/hip_runtime_api.h index a1f90e8e10..fe17ed79f2 100644 --- a/projects/clr/hipamd/include/hip/nvcc_detail/hip_runtime_api.h +++ b/projects/clr/hipamd/include/hip/nvcc_detail/hip_runtime_api.h @@ -1708,6 +1708,17 @@ inline static hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* #ifdef __CUDACC__ +template +inline static hipError_t hipOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, + T func, + int blockSize, + size_t dynamicSMemSize) { + cudaError_t cerror; + cerror = + cudaOccupancyMaxActiveBlocksPerMultiprocessor(numBlocks, func, blockSize, dynamicSMemSize); + return hipCUDAErrorTohipError(cerror); +} + template inline static hipError_t hipOccupancyMaxPotentialBlockSize(int* minGridSize, int* blockSize, T func, size_t dynamicSMemSize = 0,