From 8a60742a8d8d8551d8ca27d34927ae41cac5f7e0 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Wed, 17 Jul 2024 14:29:33 +0000 Subject: [PATCH] fix: correct reported num subslices per slice in fused config Related-To: NEO-12073 Signed-off-by: Mateusz Jablonski --- opencl/source/cl_device/cl_device_info.cpp | 3 ++- opencl/test/unit_test/device/get_device_info_tests.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/opencl/source/cl_device/cl_device_info.cpp b/opencl/source/cl_device/cl_device_info.cpp index 09dcff44b5..b4427e4d57 100644 --- a/opencl/source/cl_device/cl_device_info.cpp +++ b/opencl/source/cl_device/cl_device_info.cpp @@ -11,6 +11,7 @@ #include "shared/source/device/device.h" #include "shared/source/device/device_info.h" #include "shared/source/execution_environment/root_device_environment.h" +#include "shared/source/helpers/basic_math.h" #include "shared/source/helpers/compiler_product_helper.h" #include "shared/source/helpers/get_info.h" #include "shared/source/helpers/gfx_core_helper.h" @@ -277,7 +278,7 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName, break; case CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL: { const auto >SysInfo = getHardwareInfo().gtSystemInfo; - param.uint = gtSysInfo.SubSliceCount / gtSysInfo.SliceCount; + param.uint = static_cast(Math::divideAndRoundUp(gtSysInfo.SubSliceCount, gtSysInfo.SliceCount)); src = ¶m.uint; retSize = srcSize = sizeof(cl_uint); break; diff --git a/opencl/test/unit_test/device/get_device_info_tests.cpp b/opencl/test/unit_test/device/get_device_info_tests.cpp index 90c91424e2..8b8cd00764 100644 --- a/opencl/test/unit_test/device/get_device_info_tests.cpp +++ b/opencl/test/unit_test/device/get_device_info_tests.cpp @@ -1142,8 +1142,7 @@ struct DeviceAttributeQueryTest : public ::testing::TestWithParam(object.get()); - const auto >SysInfo = device.getHardwareInfo().gtSystemInfo; - EXPECT_EQ(gtSysInfo.SubSliceCount / gtSysInfo.SliceCount, *pNumSubslicesPerSlice); + EXPECT_EQ(4u, *pNumSubslicesPerSlice); EXPECT_EQ(sizeof(cl_uint), sizeReturned); break; } @@ -1182,7 +1181,12 @@ TEST_P(DeviceAttributeQueryTest, givenGetDeviceInfoWhenDeviceAttributeIsQueriedO debugManager.flags.CreateMultipleSubDevices.set(2); VariableBackup mockDeviceFlagBackup(&MockDevice::createSingleDevice, false); - auto pRootClDevice = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); + HardwareInfo hwInfo = *defaultHwInfo; + hwInfo.gtSystemInfo.SliceCount = 2; + hwInfo.gtSystemInfo.DualSubSliceCount = 7; + hwInfo.gtSystemInfo.SubSliceCount = 7; + + auto pRootClDevice = std::make_unique(MockDevice::createWithNewExecutionEnvironment(&hwInfo)); ASSERT_EQ(2u, pRootClDevice->subDevices.size()); verifyDeviceAttribute(*pRootClDevice);