Skip to content

Commit fc1a1b9

Browse files
Remove check for symmetrical SKU on XE_HPC_CORE
Signed-off-by: Rafal Maziejuk <[email protected]> Related-To: NEO-6989
1 parent 7865975 commit fc1a1b9

File tree

2 files changed

+26
-55
lines changed

2 files changed

+26
-55
lines changed

shared/source/xe_hpc_core/command_encoder_xe_hpc_core.cpp

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,31 @@ void EncodeDispatchKernel<Family>::adjustInterfaceDescriptorData(INTERFACE_DESCR
3535
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
3636

3737
if (hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)) {
38-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1);
39-
40-
if (hwInfo.gtSystemInfo.MaxDualSubSlicesSupported == hwInfo.gtSystemInfo.DualSubSliceCount) {
41-
UNRECOVERABLE_IF(numGrf == 0u);
42-
43-
constexpr uint32_t maxThreadsInTGForTGDispatchSize8 = 16u;
44-
constexpr uint32_t maxThreadsInTGForTGDispatchSize4 = 32u;
45-
auto &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily);
46-
uint32_t availableThreadCount = hwHelper.calculateAvailableThreadCount(hwInfo, numGrf);
47-
uint32_t numberOfThreadsInThreadGroup = interfaceDescriptor.getNumberOfThreadsInGpgpuThreadGroup();
48-
uint32_t dispatchedTotalThreadCount = numberOfThreadsInThreadGroup * threadGroupCount;
49-
50-
UNRECOVERABLE_IF(numberOfThreadsInThreadGroup == 0u);
51-
52-
if (dispatchedTotalThreadCount <= availableThreadCount) {
53-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1);
54-
} else if (numberOfThreadsInThreadGroup <= maxThreadsInTGForTGDispatchSize8) {
55-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8);
56-
} else if (numberOfThreadsInThreadGroup <= maxThreadsInTGForTGDispatchSize4) {
57-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_4);
58-
} else {
59-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_2);
60-
}
61-
62-
uint32_t exponent = INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1 - interfaceDescriptor.getThreadGroupDispatchSize();
63-
uint32_t threadGroupDispatchSize = 1u << exponent;
64-
if ((dispatchedTotalThreadCount % (numberOfThreadsInThreadGroup * threadGroupDispatchSize)) != 0) {
65-
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1);
66-
}
38+
UNRECOVERABLE_IF(numGrf == 0u);
39+
40+
constexpr uint32_t maxThreadsInTGForTGDispatchSize8 = 16u;
41+
constexpr uint32_t maxThreadsInTGForTGDispatchSize4 = 32u;
42+
auto &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily);
43+
uint32_t availableThreadCount = hwHelper.calculateAvailableThreadCount(hwInfo, numGrf);
44+
uint32_t numberOfThreadsInThreadGroup = interfaceDescriptor.getNumberOfThreadsInGpgpuThreadGroup();
45+
uint32_t dispatchedTotalThreadCount = numberOfThreadsInThreadGroup * threadGroupCount;
46+
47+
UNRECOVERABLE_IF(numberOfThreadsInThreadGroup == 0u);
48+
49+
if (dispatchedTotalThreadCount <= availableThreadCount) {
50+
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1);
51+
} else if (numberOfThreadsInThreadGroup <= maxThreadsInTGForTGDispatchSize8) {
52+
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8);
53+
} else if (numberOfThreadsInThreadGroup <= maxThreadsInTGForTGDispatchSize4) {
54+
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_4);
55+
} else {
56+
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_2);
57+
}
58+
59+
uint32_t exponent = INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1 - interfaceDescriptor.getThreadGroupDispatchSize();
60+
uint32_t threadGroupDispatchSize = 1u << exponent;
61+
if ((dispatchedTotalThreadCount % (numberOfThreadsInThreadGroup * threadGroupDispatchSize)) != 0) {
62+
interfaceDescriptor.setThreadGroupDispatchSize(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1);
6763
}
6864
}
6965

shared/test/unit_test/xe_hpc_core/test_encode_xe_hpc_core.cpp

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -510,27 +510,6 @@ XE_HPC_CORETEST_F(EncodeKernelXeHpcCoreTest, givenCleanHeapsAndSlmNotChangedAndU
510510
(gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED)));
511511
}
512512

513-
XE_HPC_CORETEST_F(EncodeKernelXeHpcCoreTest, givenInterfaceDescriptorDataAndNonSymmetricalSkuWhenAdjustInterfaceDescriptorDataIsCalledThenThreadGroupDispatchSizeIsCorrectlySet) {
514-
using INTERFACE_DESCRIPTOR_DATA = typename FamilyType::INTERFACE_DESCRIPTOR_DATA;
515-
516-
INTERFACE_DESCRIPTOR_DATA iddArg = FamilyType::cmdInitInterfaceDescriptorData;
517-
const auto &hwInfoConfig = *HwInfoConfig::get(productFamily);
518-
auto hwInfo = pDevice->getHardwareInfo();
519-
hwInfo.gtSystemInfo.DualSubSliceCount = 32u;
520-
521-
for (const auto &revision : {REVISION_A0, REVISION_B}) {
522-
hwInfo.platform.usRevId = hwInfoConfig.getHwRevIdFromStepping(revision, hwInfo);
523-
524-
EncodeDispatchKernel<FamilyType>::adjustInterfaceDescriptorData(iddArg, hwInfo, 0, 0);
525-
526-
if (hwInfoConfig.isDisableOverdispatchAvailable(hwInfo)) {
527-
EXPECT_EQ(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1, iddArg.getThreadGroupDispatchSize());
528-
} else {
529-
EXPECT_EQ(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_8, iddArg.getThreadGroupDispatchSize());
530-
}
531-
}
532-
}
533-
534513
XE_HPC_CORETEST_F(EncodeKernelXeHpcCoreTest, givenDispatchSizeSmallerOrEqualToAvailableThreadCountWhenAdjustInterfaceDescriptorDataIsCalledThenThreadGroupDispatchSizeIsCorrectlySet) {
535514
using INTERFACE_DESCRIPTOR_DATA = typename FamilyType::INTERFACE_DESCRIPTOR_DATA;
536515

@@ -569,11 +548,7 @@ XE_HPC_CORETEST_F(EncodeKernelXeHpcCoreTest, givenNumberOfThreadsInThreadGroupWh
569548

570549
EncodeDispatchKernel<FamilyType>::adjustInterfaceDescriptorData(iddArg, hwInfo, threadGroupCount, numGrf);
571550

572-
if (hwInfo.gtSystemInfo.MaxDualSubSlicesSupported == hwInfo.gtSystemInfo.DualSubSliceCount) {
573-
EXPECT_EQ(expectedThreadGroupDispatchSize, iddArg.getThreadGroupDispatchSize());
574-
} else {
575-
EXPECT_EQ(INTERFACE_DESCRIPTOR_DATA::THREAD_GROUP_DISPATCH_SIZE_TG_SIZE_1, iddArg.getThreadGroupDispatchSize());
576-
}
551+
EXPECT_EQ(expectedThreadGroupDispatchSize, iddArg.getThreadGroupDispatchSize());
577552
}
578553
}
579554

0 commit comments

Comments
 (0)