Skip to content

Commit 6857e02

Browse files
feature: Enable ULLS context termination for context group on multi-tile
Related-To: NEO-13325 Signed-off-by: Slawomir Milczarek <[email protected]>
1 parent 59179fa commit 6857e02

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

shared/source/direct_submission/direct_submission_controller.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ void DirectSubmissionController::registerDirectSubmission(CommandStreamReceiver
5050
std::lock_guard<std::mutex> lock(directSubmissionsMutex);
5151
directSubmissions.insert(std::make_pair(csr, DirectSubmissionState()));
5252
this->overrideDirectSubmissionTimeouts(csr->getProductHelper());
53+
if (debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.get() == -1) {
54+
bool multiTile = csr->getOsContext().getDeviceBitfield().count() > 1;
55+
isCsrsContextGroupIdleDetectionEnabled = multiTile;
56+
}
5357
}
5458

5559
void DirectSubmissionController::unregisterDirectSubmission(CommandStreamReceiver *csr) {

shared/test/unit_test/direct_submission/direct_submission_controller_tests.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,46 @@ TEST(DirectSubmissionIdleDetectionWithContextGroupTest, givenDirectSubmissionCon
764764
}
765765
}
766766

767+
TEST(DirectSubmissionIdleDetectionWithContextGroupTest, givenDebugFlagUnsetAndSingleTileWhenRegisterDirectSubmissionThenContextGroupIdleDetectionIsFalse) {
768+
DebugManagerStateRestore restorer;
769+
debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.set(-1);
770+
771+
DirectSubmissionControllerMock controller;
772+
773+
// Simulate single-tile device bitfield (only bit 0 set)
774+
DeviceBitfield singleTileBitfield(1);
775+
OsContext osContext(0, 55, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_CCS, EngineUsage::regular}, singleTileBitfield));
776+
MockExecutionEnvironment executionEnvironment;
777+
executionEnvironment.prepareRootDeviceEnvironments(1);
778+
executionEnvironment.initializeMemoryManager();
779+
MockCommandStreamReceiver csr(executionEnvironment, 0, singleTileBitfield);
780+
csr.osContext = &osContext;
781+
782+
controller.registerDirectSubmission(&csr);
783+
784+
EXPECT_FALSE(controller.isCsrsContextGroupIdleDetectionEnabled);
785+
}
786+
787+
TEST(DirectSubmissionIdleDetectionWithContextGroupTest, givenDebugFlagUnsetAndMultiTileWhenRegisterDirectSubmissionThenContextGroupIdleDetectionIsTrue) {
788+
DebugManagerStateRestore restorer;
789+
debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.set(-1);
790+
791+
DirectSubmissionControllerMock controller;
792+
793+
// Simulate multi-tile device bitfield (bits 0 and 1 set)
794+
DeviceBitfield multiTileBitfield(0b11);
795+
OsContext osContext(0, 55, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_CCS, EngineUsage::regular}, multiTileBitfield));
796+
MockExecutionEnvironment executionEnvironment;
797+
executionEnvironment.prepareRootDeviceEnvironments(1);
798+
executionEnvironment.initializeMemoryManager();
799+
MockCommandStreamReceiver csr(executionEnvironment, 0, multiTileBitfield);
800+
csr.osContext = &osContext;
801+
802+
controller.registerDirectSubmission(&csr);
803+
804+
EXPECT_TRUE(controller.isCsrsContextGroupIdleDetectionEnabled);
805+
}
806+
767807
class MockContextGroupIdleDetectionCsr : public MockCommandStreamReceiver {
768808
public:
769809
using MockCommandStreamReceiver::MockCommandStreamReceiver;

0 commit comments

Comments
 (0)