diff --git a/projects/clr/hipamd/src/hip_module.cpp b/projects/clr/hipamd/src/hip_module.cpp index 1d96c6a88d..8707486424 100644 --- a/projects/clr/hipamd/src/hip_module.cpp +++ b/projects/clr/hipamd/src/hip_module.cpp @@ -705,7 +705,11 @@ hipError_t hipLaunchCooperativeKernel_common(const void* f, dim3 gridDim, dim3 b void** kernelParams, uint32_t sharedMemBytes, hipStream_t hStream) { if (!hip::isValid(hStream)) { - return hipErrorInvalidValue; + return hipErrorContextIsDestroyed; + } + + if (f == nullptr) { + return hipErrorInvalidDeviceFunction; } hipFunction_t func = nullptr; @@ -725,6 +729,10 @@ hipError_t hipLaunchCooperativeKernel_common(const void* f, dim3 gridDim, dim3 b return hipErrorInvalidConfiguration; } + if (sharedMemBytes > device->info().localMemSizePerCU_) { + return hipErrorCooperativeLaunchTooLarge; + } + return ihipModuleLaunchKernel(func, static_cast(globalWorkSizeX), static_cast(globalWorkSizeY), static_cast(globalWorkSizeZ), blockDim.x, blockDim.y,