From c3c2028ed685b9375ab361b04459fc4a1a1ddb53 Mon Sep 17 00:00:00 2001 From: Jaroslaw Warchulski Date: Fri, 17 Jan 2025 13:37:14 +0000 Subject: [PATCH] fix: report correct EU counts for multi-slice platforms Related-To: GSD-10625 Signed-off-by: Jaroslaw Warchulski --- level_zero/core/source/device/device_imp.cpp | 2 +- .../sources/device/test_l0_device.cpp | 31 +++++++------------ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index d4233299c6..54ce4c4f7b 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -1042,7 +1042,7 @@ ze_result_t DeviceImp::getProperties(ze_device_properties_t *pDeviceProperties) } } else if (extendedProperties->stype == ZE_STRUCTURE_TYPE_EU_COUNT_EXT) { ze_eu_count_ext_t *zeEuCountDesc = reinterpret_cast(extendedProperties); - uint32_t numTotalEUs = hardwareInfo.gtSystemInfo.MaxEuPerSubSlice * hardwareInfo.gtSystemInfo.SubSliceCount * hardwareInfo.gtSystemInfo.SliceCount; + uint32_t numTotalEUs = hardwareInfo.gtSystemInfo.EUCount; if (isImplicitScalingCapable()) { numTotalEUs *= neoDevice->getNumGenericSubDevices(); diff --git a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp index 55673b149b..eb89b20083 100644 --- a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp +++ b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp @@ -1360,18 +1360,15 @@ TEST_F(DeviceTest, WhenRequestingZeEuCountThenExpectedEUsAreReturned) { ze_eu_count_ext_t zeEuCountDesc = {ZE_STRUCTURE_TYPE_EU_COUNT_EXT}; deviceProperties.pNext = &zeEuCountDesc; - uint32_t maxEuPerSubSlice = 48; - uint32_t subSliceCount = 8; - uint32_t sliceCount = 1; + uint32_t maxEuPerSubSlice = 8; + uint32_t subSliceCount = 18; + uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.MaxEuPerSubSlice = maxEuPerSubSlice; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SubSliceCount = subSliceCount; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SliceCount = sliceCount; + auto hwInfo = device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo(); + hwInfo->gtSystemInfo.EUCount = expectedEUs; device->getProperties(&deviceProperties); - uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount * sliceCount; - EXPECT_EQ(expectedEUs, zeEuCountDesc.numTotalEUs); } @@ -1383,16 +1380,13 @@ TEST_F(DeviceTest, WhenRequestingZeEuCountWithoutStypeCorrectThenNoEusAreReturne uint32_t maxEuPerSubSlice = 48; uint32_t subSliceCount = 8; - uint32_t sliceCount = 1; + uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.MaxEuPerSubSlice = maxEuPerSubSlice; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SubSliceCount = subSliceCount; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SliceCount = sliceCount; + auto hwInfo = device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo(); + hwInfo->gtSystemInfo.EUCount = expectedEUs; device->getProperties(&deviceProperties); - uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount * sliceCount; - EXPECT_NE(expectedEUs, zeEuCountDesc.numTotalEUs); EXPECT_EQ(std::numeric_limits::max(), zeEuCountDesc.numTotalEUs); } @@ -2524,17 +2518,14 @@ TEST_F(MultipleDevicesEnabledImplicitScalingTest, WhenRequestingZeEuCountThenExp uint32_t maxEuPerSubSlice = 48; uint32_t subSliceCount = 8; - uint32_t sliceCount = 1; + uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount; L0::Device *device = driverHandle->devices[0]; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.MaxEuPerSubSlice = maxEuPerSubSlice; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SubSliceCount = subSliceCount; - device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->gtSystemInfo.SliceCount = sliceCount; + auto hwInfo = device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo(); + hwInfo->gtSystemInfo.EUCount = expectedEUs; device->getProperties(&deviceProperties); - uint32_t expectedEUs = maxEuPerSubSlice * subSliceCount * sliceCount; - EXPECT_EQ(expectedEUs * numSubDevices, zeEuCountDesc.numTotalEUs); }