Skip to content

Commit 0768bf7

Browse files
When select copy engine round robin over all copy engines
Signed-off-by: Lukasz Jobczyk <[email protected]>
1 parent 76cb654 commit 0768bf7

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

opencl/test/unit_test/helpers/engine_node_helper_tests_xehp_and_later.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2021 Intel Corporation
2+
* Copyright (C) 2021-2022 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -39,4 +39,31 @@ HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenDebugVariableSetWhenAskingForE
3939
EXPECT_ANY_THROW(EngineHelpers::getBcsEngineType(hwInfo, deviceBitfield, selectorCopyEngine, false));
4040
}
4141
}
42+
}
43+
44+
HWTEST2_F(EngineNodeHelperTestsXeHPAndLater, givenEnableCmdQRoundRobindBcsEngineAssignWhenSelectLinkCopyEngineThenRoundRobinOverAllAvailableLinkedCopyEngines, IsAtLeastXeHpCore) {
45+
DebugManagerStateRestore restore;
46+
DebugManager.flags.EnableCmdQRoundRobindBcsEngineAssign.set(1u);
47+
DeviceBitfield deviceBitfield = 0b10;
48+
49+
const auto hwInfo = pDevice->getHardwareInfo();
50+
auto &selectorCopyEngine = pDevice->getNearestGenericSubDevice(0)->getSelectorCopyEngine();
51+
52+
int32_t expectedEngineType = aub_stream::EngineType::ENGINE_BCS1;
53+
for (int32_t i = 0; i <= 20; i++) {
54+
while (!HwHelper::get(hwInfo.platform.eRenderCoreFamily).isSubDeviceEngineSupported(hwInfo, deviceBitfield, static_cast<aub_stream::EngineType>(expectedEngineType))) {
55+
expectedEngineType++;
56+
if (static_cast<aub_stream::EngineType>(expectedEngineType) > aub_stream::EngineType::ENGINE_BCS8) {
57+
expectedEngineType = aub_stream::EngineType::ENGINE_BCS1;
58+
}
59+
}
60+
61+
auto engineType = EngineHelpers::selectLinkCopyEngine(hwInfo, deviceBitfield, selectorCopyEngine.selector);
62+
EXPECT_EQ(engineType, static_cast<aub_stream::EngineType>(expectedEngineType));
63+
64+
expectedEngineType++;
65+
if (static_cast<aub_stream::EngineType>(expectedEngineType) > aub_stream::EngineType::ENGINE_BCS8) {
66+
expectedEngineType = aub_stream::EngineType::ENGINE_BCS1;
67+
}
68+
}
4269
}

opencl/test/unit_test/test_files/igdrcl.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ OverrideUseKmdWaitFunction = -1
314314
EnableCacheFlushAfterWalkerForAllQueues = -1
315315
Force32BitDriverSupport = -1
316316
EnableCmdQRoundRobindEngineAssign = -1
317+
EnableCmdQRoundRobindBcsEngineAssign = -1
317318
OverrideCmdQueueSynchronousMode = -1
318319
UseAtomicsForSelfCleanupSection = -1
319320
HBMSizePerTileInGigabytes = 0

shared/source/debug_settings/debug_variables_base.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, EnableUserFenceUseCtxId, -1, "-1: default (disab
336336
DECLARE_DEBUG_VARIABLE(int32_t, SetKmdWaitTimeout, -1, "-1: default (infinity), >0: amount of time units for wait function timeout")
337337
DECLARE_DEBUG_VARIABLE(int32_t, OverrideNotifyEnableForTagUpdatePostSync, -1, "-1: default (usage determined by user fence wait call), 0: disable use of NotifyEnable flag, 1: enable use NotifyEnable flag")
338338
DECLARE_DEBUG_VARIABLE(int32_t, EnableCmdQRoundRobindEngineAssign, -1, "-1: default, 0: disable, 1: enable")
339+
DECLARE_DEBUG_VARIABLE(int32_t, EnableCmdQRoundRobindBcsEngineAssign, -1, "-1: default, 0: disable, 1: enable")
339340
DECLARE_DEBUG_VARIABLE(int32_t, Force32BitDriverSupport, -1, "-1: default, 0: disable, 1: enable, Forces the driver to support 32 bit.")
340341
DECLARE_DEBUG_VARIABLE(int32_t, OverrideSystolicPipelineSelect, -1, "set SYSTOLIC MODE ENABLE in PIPELINE_SELECT cmd, -1:default, 0:disable, 1:enable")
341342
DECLARE_DEBUG_VARIABLE(int32_t, OverrideSystolicInComputeWalker, -1, "set SYSTOLIC MODE ENABLE in COMPUTE_WALKER cmd, -1:default, 0:disable, 1:enable")

shared/source/helpers/engine_node_helper.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2019-2021 Intel Corporation
2+
* Copyright (C) 2019-2022 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -153,6 +153,21 @@ bool linkCopyEnginesSupported(const HardwareInfo &hwInfo, const DeviceBitfield &
153153
}
154154

155155
aub_stream::EngineType selectLinkCopyEngine(const HardwareInfo &hwInfo, const DeviceBitfield &deviceBitfield, std::atomic<uint32_t> &selectorCopyEngine) {
156+
auto enableCmdQRoundRobindBcsEngineAssign = false;
157+
158+
if (DebugManager.flags.EnableCmdQRoundRobindBcsEngineAssign.get() != -1) {
159+
enableCmdQRoundRobindBcsEngineAssign = DebugManager.flags.EnableCmdQRoundRobindBcsEngineAssign.get();
160+
}
161+
162+
if (enableCmdQRoundRobindBcsEngineAssign) {
163+
aub_stream::EngineType engineType;
164+
do {
165+
engineType = static_cast<aub_stream::EngineType>(aub_stream::EngineType::ENGINE_BCS1 + (selectorCopyEngine.fetch_add(1u) % 8));
166+
} while (!HwHelper::get(hwInfo.platform.eRenderCoreFamily).isSubDeviceEngineSupported(hwInfo, deviceBitfield, engineType));
167+
168+
return engineType;
169+
}
170+
156171
const aub_stream::EngineType engine1 = HwHelper::get(hwInfo.platform.eRenderCoreFamily).isSubDeviceEngineSupported(hwInfo, deviceBitfield, aub_stream::ENGINE_BCS1)
157172
? aub_stream::ENGINE_BCS1
158173
: aub_stream::ENGINE_BCS4;

0 commit comments

Comments
 (0)