mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-22 10:17:01 +08:00
feature: Don't terminate ULLS contexts if busy context exists (default)
Controlled with the knob DirectSubmissionControllerContextGroupIdleDetection (note: the feature is enabled by default) Related-To: NEO-13325 Signed-off-by: Slawomir Milczarek <slawomir.milczarek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
b87f25753e
commit
b169105da0
@@ -36,7 +36,7 @@ DirectSubmissionController::DirectSubmissionController() {
|
||||
if (debugManager.flags.DirectSubmissionControllerIdleDetection.get() != -1) {
|
||||
isCsrIdleDetectionEnabled = debugManager.flags.DirectSubmissionControllerIdleDetection.get();
|
||||
}
|
||||
isCsrsContextGroupIdleDetectionEnabled = false;
|
||||
isCsrsContextGroupIdleDetectionEnabled = true;
|
||||
if (debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.get() != -1) {
|
||||
isCsrsContextGroupIdleDetectionEnabled = debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.get();
|
||||
}
|
||||
|
||||
@@ -614,6 +614,27 @@ TEST(CommandStreamReceiverGetContextGroupIdTests, givenContextGroupWithoutPrimar
|
||||
EXPECT_EQ(55u, csr.getContextGroupId());
|
||||
}
|
||||
|
||||
TEST(DirectSubmissionIdleDetectionWithContextGroupTest, givenDefaultConstructorWhenCreatingControllerThenContextGroupIdleDetectionIsEnabledByDefault) {
|
||||
DirectSubmissionControllerMock controller;
|
||||
|
||||
EXPECT_TRUE(controller.isCsrsContextGroupIdleDetectionEnabled);
|
||||
}
|
||||
|
||||
TEST(DirectSubmissionIdleDetectionWithContextGroupTest, givenDirectSubmissionControllerContextGroupIdleDetectionSetWhenCreatingControllerThenContextGroupIdleDetectionIsSetCorrectly) {
|
||||
DebugManagerStateRestore restorer;
|
||||
|
||||
for (auto contextGroupIdleDetectionState : {-1, 0, 1}) {
|
||||
debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.set(contextGroupIdleDetectionState);
|
||||
|
||||
DirectSubmissionControllerMock controller;
|
||||
if (0 == contextGroupIdleDetectionState) {
|
||||
EXPECT_FALSE(controller.isCsrsContextGroupIdleDetectionEnabled);
|
||||
} else {
|
||||
EXPECT_TRUE(controller.isCsrsContextGroupIdleDetectionEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MockContextGroupIdleDetectionCsr : public MockCommandStreamReceiver {
|
||||
public:
|
||||
using MockCommandStreamReceiver::MockCommandStreamReceiver;
|
||||
@@ -641,12 +662,12 @@ class MockContextGroupIdleDetectionCsr : public MockCommandStreamReceiver {
|
||||
class DirectSubmissionIdleDetectionWithContextGroupTests : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.set(1);
|
||||
executionEnvironment.prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment.initializeMemoryManager();
|
||||
executionEnvironment.rootDeviceEnvironments[0]->osTime.reset(new MockOSTime{});
|
||||
|
||||
controller = std::make_unique<DirectSubmissionControllerMock>();
|
||||
ASSERT_TRUE(controller->isCsrsContextGroupIdleDetectionEnabled);
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
@@ -898,12 +919,12 @@ TEST_F(DirectSubmissionIdleDetectionWithContextGroupTests, whenContextGroupIdleD
|
||||
class DirectSubmissionContextGroupCompositeKeyTests : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
debugManager.flags.DirectSubmissionControllerContextGroupIdleDetection.set(1);
|
||||
executionEnvironment.prepareRootDeviceEnvironments(2);
|
||||
executionEnvironment.initializeMemoryManager();
|
||||
executionEnvironment.rootDeviceEnvironments[0]->osTime.reset(new MockOSTime{});
|
||||
executionEnvironment.rootDeviceEnvironments[1]->osTime.reset(new MockOSTime{});
|
||||
controller = std::make_unique<DirectSubmissionControllerMock>();
|
||||
ASSERT_TRUE(controller->isCsrsContextGroupIdleDetectionEnabled);
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
|
||||
Reference in New Issue
Block a user