From 122c2f9034bb955259952862471eb2b89fd4e5ac 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/hip commit: 4128d68ed7be3d5e3cea42f0ef07c43dc86a0837] --- .../hip/include/hip/nvcc_detail/hip_runtime_api.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/hip/include/hip/nvcc_detail/hip_runtime_api.h b/projects/hip/include/hip/nvcc_detail/hip_runtime_api.h index a1f90e8e10..fe17ed79f2 100644 --- a/projects/hip/include/hip/nvcc_detail/hip_runtime_api.h +++ b/projects/hip/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,