From 47383d752f19d9e32d8968931e9cd1dcb1ec95be Mon Sep 17 00:00:00 2001 From: Wenbin Lu Date: Tue, 19 Nov 2024 18:18:28 +0000 Subject: [PATCH] fix: report correct number of XeCore per Cluster Related-To: NEO-10060 Signed-off-by: Wenbin Lu --- opencl/source/cl_device/cl_device_info.cpp | 5 +---- shared/source/helpers/hw_info.cpp | 5 +++++ shared/source/helpers/hw_info.h | 1 + shared/test/unit_test/helpers/hw_info_tests.cpp | 9 +++++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/opencl/source/cl_device/cl_device_info.cpp b/opencl/source/cl_device/cl_device_info.cpp index b4427e4d57..9f443d3143 100644 --- a/opencl/source/cl_device/cl_device_info.cpp +++ b/opencl/source/cl_device/cl_device_info.cpp @@ -7,11 +7,9 @@ #include "opencl/source/cl_device/cl_device_info.h" -#include "shared/source/debug_settings/debug_settings_manager.h" #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,8 +275,7 @@ cl_int ClDevice::getDeviceInfo(cl_device_info paramName, retSize = srcSize = sizeof(cl_uint); break; case CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL: { - const auto >SysInfo = getHardwareInfo().gtSystemInfo; - param.uint = static_cast(Math::divideAndRoundUp(gtSysInfo.SubSliceCount, gtSysInfo.SliceCount)); + param.uint = static_cast(getNumSubSlicesPerSlice(getHardwareInfo())); src = ¶m.uint; retSize = srcSize = sizeof(cl_uint); break; diff --git a/shared/source/helpers/hw_info.cpp b/shared/source/helpers/hw_info.cpp index 380a6dcb4e..089ffdd686 100644 --- a/shared/source/helpers/hw_info.cpp +++ b/shared/source/helpers/hw_info.cpp @@ -9,6 +9,7 @@ #include "shared/source/command_stream/linear_stream.h" #include "shared/source/debug_settings/debug_settings_manager.h" +#include "shared/source/helpers/basic_math.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/release_helper/release_helper.h" @@ -176,4 +177,8 @@ void setupDefaultFeatureTableAndWorkaroundTable(HardwareInfo *hwInfo) { workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true; } +uint32_t getNumSubSlicesPerSlice(const HardwareInfo &hwInfo) { + return static_cast(Math::divideAndRoundUp(hwInfo.gtSystemInfo.SubSliceCount, hwInfo.gtSystemInfo.SliceCount)); +} + } // namespace NEO diff --git a/shared/source/helpers/hw_info.h b/shared/source/helpers/hw_info.h index 2916f47815..4044b61aad 100644 --- a/shared/source/helpers/hw_info.h +++ b/shared/source/helpers/hw_info.h @@ -169,5 +169,6 @@ bool parseHwInfoConfigString(const std::string &hwInfoConfigStr, uint64_t &hwInf aub_stream::EngineType getChosenEngineType(const HardwareInfo &hwInfo); void setupDefaultGtSysInfo(HardwareInfo *hwInfo, const ReleaseHelper *releaseHelper); void setupDefaultFeatureTableAndWorkaroundTable(HardwareInfo *hwInfo); +uint32_t getNumSubSlicesPerSlice(const HardwareInfo &hwInfo); } // namespace NEO diff --git a/shared/test/unit_test/helpers/hw_info_tests.cpp b/shared/test/unit_test/helpers/hw_info_tests.cpp index ce20c955d2..7f05404986 100644 --- a/shared/test/unit_test/helpers/hw_info_tests.cpp +++ b/shared/test/unit_test/helpers/hw_info_tests.cpp @@ -5,6 +5,7 @@ * */ +#include "shared/source/helpers/basic_math.h" #include "shared/source/helpers/hw_info.h" #include "shared/test/common/test_macros/test.h" @@ -39,3 +40,11 @@ TEST(HwInfoTest, whenSettingDefaultFeatureTableAndWorkaroundTableThenProperField EXPECT_EQ(expectedFeatureTable.asHash(), hwInfo.featureTable.asHash()); EXPECT_EQ(expectedWorkaroundTable.asHash(), hwInfo.workaroundTable.asHash()); } + +TEST(HwInfoTest, givenHwInfoWhenQueryNumSubSlicesPerSliceThenCorrectNumberIsReturned) { + HardwareInfo hwInfo{}; + hwInfo.gtSystemInfo.SliceCount = 2; + hwInfo.gtSystemInfo.SubSliceCount = 7; + auto expectedNumSubSlicesPerSlice = static_cast(Math::divideAndRoundUp(hwInfo.gtSystemInfo.SubSliceCount, hwInfo.gtSystemInfo.SliceCount)); + EXPECT_EQ(getNumSubSlicesPerSlice(hwInfo), expectedNumSubSlicesPerSlice); +}