From 438b27a73ec3106310d6620149298c40ee53332a Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Wed, 18 Sep 2019 14:00:34 +0200 Subject: [PATCH] Take maxKernelWorkGroupSize for totalWorkItems check Change-Id: I30ebee26eddeb31890565b0edcbefc21392a91d1 Signed-off-by: Dunajski, Bartosz --- runtime/command_queue/enqueue_kernel.h | 2 +- unit_tests/command_queue/enqueue_kernel_1_tests.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/runtime/command_queue/enqueue_kernel.h b/runtime/command_queue/enqueue_kernel.h index d4cc3ff43b..5042cff291 100644 --- a/runtime/command_queue/enqueue_kernel.h +++ b/runtime/command_queue/enqueue_kernel.h @@ -127,7 +127,7 @@ cl_int CommandQueueHw::enqueueKernel( ",", globalWorkSizeIn[2], ",SIMD:, ", kernel.getKernelInfo().getMaxSimdSize()); - if (totalWorkItems > this->getDevice().getDeviceInfo().maxWorkGroupSize) { + if (totalWorkItems > kernel.maxKernelWorkGroupSize) { return CL_INVALID_WORK_GROUP_SIZE; } diff --git a/unit_tests/command_queue/enqueue_kernel_1_tests.cpp b/unit_tests/command_queue/enqueue_kernel_1_tests.cpp index fad831d9f9..9892c29b9c 100644 --- a/unit_tests/command_queue/enqueue_kernel_1_tests.cpp +++ b/unit_tests/command_queue/enqueue_kernel_1_tests.cpp @@ -1049,9 +1049,11 @@ TEST_F(EnqueueKernelTest, givenKernelWhenAllArgsAreNotAndEventExistSetThenClEnqu TEST_F(EnqueueKernelTest, givenEnqueueCommandThatLwsExceedsDeviceCapabilitiesWhenEnqueueNDRangeKernelIsCalledThenErrorIsReturned) { MockKernelWithInternals mockKernel(*pDevice); - auto maxWorkgroupSize = mockKernel.mockKernel->maxKernelWorkGroupSize; - size_t globalWorkSize[3] = {maxWorkgroupSize * 2, 1, 1}; - size_t localWorkSize[3] = {maxWorkgroupSize * 2, 1, 1}; + mockKernel.mockKernel->maxKernelWorkGroupSize = static_cast(pDevice->getDeviceInfo().maxWorkGroupSize / 2); + + auto maxKernelWorkgroupSize = mockKernel.mockKernel->maxKernelWorkGroupSize; + size_t globalWorkSize[3] = {maxKernelWorkgroupSize + 1, 1, 1}; + size_t localWorkSize[3] = {maxKernelWorkgroupSize + 1, 1, 1}; auto status = pCmdQ->enqueueKernel(mockKernel.mockKernel, 1, nullptr, globalWorkSize, localWorkSize, 0, nullptr, nullptr); EXPECT_EQ(CL_INVALID_WORK_GROUP_SIZE, status);