Skip to content

Commit ad15fe2

Browse files
Second level affinity mask support
Signed-off-by: Bartosz Dunajski <[email protected]>
1 parent 317ef37 commit ad15fe2

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

opencl/test/unit_test/device/sub_device_tests.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,25 @@ TEST_F(EngineInstancedDeviceTests, givenAffinityMaskForSecondLevelOnSingleTileDe
799799

800800
DebugManager.flags.AllowSingleTileEngineInstancedSubDevices.set(true);
801801

802+
DebugManager.flags.ZE_AFFINITY_MASK.set("0.0, 0.4");
803+
804+
if (!createDevices(genericDevicesCount, ccsCount)) {
805+
GTEST_SKIP();
806+
}
807+
808+
EXPECT_FALSE(hasRootCsrOnly(rootDevice));
809+
810+
EXPECT_TRUE(rootDevice->isEngineInstanced());
811+
EXPECT_EQ(0u, rootDevice->getNumGenericSubDevices());
812+
EXPECT_EQ(0u, rootDevice->getNumSubDevices());
813+
}
814+
815+
TEST_F(EngineInstancedDeviceTests, givenAffinityMaskForSecondLevelOnSingleTileDeviceSingleEngineWhenCreatingThenDontEnableEngineInstancedDevices) {
816+
constexpr uint32_t genericDevicesCount = 1;
817+
constexpr uint32_t ccsCount = 1;
818+
819+
DebugManager.flags.AllowSingleTileEngineInstancedSubDevices.set(true);
820+
802821
DebugManager.flags.ZE_AFFINITY_MASK.set("0.0");
803822

804823
if (!createDevices(genericDevicesCount, ccsCount)) {
@@ -809,7 +828,7 @@ TEST_F(EngineInstancedDeviceTests, givenAffinityMaskForSecondLevelOnSingleTileDe
809828

810829
EXPECT_FALSE(rootDevice->isEngineInstanced());
811830
EXPECT_EQ(0u, rootDevice->getNumGenericSubDevices());
812-
EXPECT_EQ(ccsCount, rootDevice->getNumSubDevices());
831+
EXPECT_EQ(0u, rootDevice->getNumSubDevices());
813832
}
814833

815834
TEST_F(EngineInstancedDeviceTests, givenAffinityMaskForSecondLevelOnSingleTileDeviceWithoutDebugFlagWhenCreatingThenDontEnableAllEngineInstancedDevices) {

shared/source/execution_environment/execution_environment.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,17 @@ void ExecutionEnvironment::parseAffinityMask() {
136136
if (subEntries.size() > 1) {
137137
uint32_t subDeviceIndex = StringHelpers::toUint32t(subEntries[1]);
138138

139-
if (subDeviceIndex < subDevicesCount) {
139+
bool enableSecondLevelEngineInstanced = ((subDevicesCount == 1) &&
140+
(hwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled > 1) &&
141+
DebugManager.flags.AllowSingleTileEngineInstancedSubDevices.get());
142+
143+
if (enableSecondLevelEngineInstanced) {
144+
UNRECOVERABLE_IF(subEntries.size() != 2);
145+
146+
if (subDeviceIndex < hwInfo->gtSystemInfo.CCSInfo.NumberOfCCSEnabled) {
147+
affinityMaskHelper[rootDeviceIndex].enableEngineInstancedSubDevice(0, subDeviceIndex); // Mask: X.Y
148+
}
149+
} else if (subDeviceIndex < subDevicesCount) {
140150
if (subEntries.size() == 2) {
141151
affinityMaskHelper[rootDeviceIndex].enableGenericSubDevice(subDeviceIndex); // Mask: X.Y
142152
} else {

0 commit comments

Comments
 (0)