diff --git a/projects/clr/rocclr/device/pal/palvirtual.cpp b/projects/clr/rocclr/device/pal/palvirtual.cpp index 4a85bb10fe..8538f5b96a 100644 --- a/projects/clr/rocclr/device/pal/palvirtual.cpp +++ b/projects/clr/rocclr/device/pal/palvirtual.cpp @@ -2331,10 +2331,10 @@ void VirtualGPU::PostDeviceEnqueue(const amd::Kernel& kernel, const HSAILKernel& // ================================================================================================ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { if (vcmd.cooperativeGroups()) { - uint32_t workgroups = 0; + uint32_t workgroups = 1; for (uint i = 0; i < vcmd.sizes().dimensions(); i++) { - if ((vcmd.sizes().local()[i] != 0) && (vcmd.sizes().global()[i] != 1)) { - workgroups += (vcmd.sizes().global()[i] / vcmd.sizes().local()[i]); + if (vcmd.sizes().local()[i] != 0) { + workgroups *= (vcmd.sizes().global()[i] / vcmd.sizes().local()[i]); } } diff --git a/projects/clr/rocclr/device/rocm/rocvirtual.cpp b/projects/clr/rocclr/device/rocm/rocvirtual.cpp index 31950d3a70..f6d484e86b 100644 --- a/projects/clr/rocclr/device/rocm/rocvirtual.cpp +++ b/projects/clr/rocclr/device/rocm/rocvirtual.cpp @@ -2595,10 +2595,10 @@ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { if (vcmd.cooperativeGroups()) { // Initialize GWS if it's cooperative groups launch - uint32_t workgroups = 0; + uint32_t workgroups = 1; for (uint i = 0; i < vcmd.sizes().dimensions(); i++) { - if ((vcmd.sizes().local()[i] != 0) && (vcmd.sizes().global()[i] != 1)) { - workgroups += (vcmd.sizes().global()[i] / vcmd.sizes().local()[i]); + if (vcmd.sizes().local()[i] != 0) { + workgroups *= (vcmd.sizes().global()[i] / vcmd.sizes().local()[i]); } }