Skip to content

Commit 20d2920

Browse files
refactor: Allow debug key to force USM cleaner with ULLS light
Related-To: NEO-13922 Signed-off-by: Lukasz Jobczyk <[email protected]>
1 parent 1eafbc3 commit 20d2920

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

shared/source/execution_environment/execution_environment.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ DirectSubmissionController *ExecutionEnvironment::initializeDirectSubmissionCont
152152
return directSubmissionController.get();
153153
}
154154

155-
void ExecutionEnvironment::initializeUnifiedMemoryReuseCleaner() {
155+
void ExecutionEnvironment::initializeUnifiedMemoryReuseCleaner(bool enable) {
156156
std::lock_guard<std::mutex> lock(initializeUnifiedMemoryReuseCleanerMutex);
157-
auto initializeUnifiedMemoryReuseCleaner = UnifiedMemoryReuseCleaner::isSupported();
157+
auto initializeUnifiedMemoryReuseCleaner = UnifiedMemoryReuseCleaner::isSupported() && enable;
158158

159159
if (debugManager.flags.ExperimentalUSMAllocationReuseCleaner.get() != -1) {
160160
initializeUnifiedMemoryReuseCleaner = debugManager.flags.ExperimentalUSMAllocationReuseCleaner.get() == 1;

shared/source/execution_environment/execution_environment.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class ExecutionEnvironment : public ReferenceTrackedObject<ExecutionEnvironment>
6666
bool isFP64EmulationEnabled() const { return fp64EmulationEnabled; }
6767

6868
DirectSubmissionController *initializeDirectSubmissionController();
69-
void initializeUnifiedMemoryReuseCleaner();
69+
void initializeUnifiedMemoryReuseCleaner(bool enable);
7070

7171
std::unique_ptr<MemoryManager> memoryManager;
7272
std::unique_ptr<UnifiedMemoryReuseCleaner> unifiedMemoryReuseCleaner;

shared/source/memory_manager/unified_memory_manager.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -845,9 +845,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) {
845845
this->usmDeviceAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableDeviceAllocationCache.get();
846846
}
847847
if (this->usmDeviceAllocationsCacheEnabled) {
848-
if (!device.isAnyDirectSubmissionEnabled(true)) {
849-
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner();
850-
}
848+
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true));
851849
this->initUsmDeviceAllocationsCache(device);
852850
}
853851

@@ -856,9 +854,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) {
856854
this->usmHostAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableHostAllocationCache.get();
857855
}
858856
if (this->usmHostAllocationsCacheEnabled) {
859-
if (!device.isAnyDirectSubmissionEnabled(true)) {
860-
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner();
861-
}
857+
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true));
862858
this->initUsmHostAllocationsCache();
863859
}
864860
}

shared/test/unit_test/execution_environment/execution_environment_tests.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,11 @@ TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetWhenInit
304304

305305
VariableBackup<decltype(NEO::Thread::createFunc)> funcBackup{&NEO::Thread::createFunc, [](void *(*func)(void *), void *arg) -> std::unique_ptr<Thread> { return nullptr; }};
306306
MockExecutionEnvironment executionEnvironment{};
307-
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
307+
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
308308
auto cleaner = executionEnvironment.unifiedMemoryReuseCleaner.get();
309309

310310
EXPECT_NE(cleaner, nullptr);
311-
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
311+
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
312312
EXPECT_EQ(cleaner, executionEnvironment.unifiedMemoryReuseCleaner.get());
313313
}
314314

@@ -317,11 +317,23 @@ TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetZeroWhen
317317
debugManager.flags.ExperimentalUSMAllocationReuseCleaner.set(0);
318318

319319
MockExecutionEnvironment executionEnvironment{};
320-
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
320+
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
321321

322322
EXPECT_EQ(nullptr, executionEnvironment.unifiedMemoryReuseCleaner.get());
323323
}
324324

325+
TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetAndNotEnabledWhenInitializeUnifiedMemoryReuseCleanerThenForceInit) {
326+
DebugManagerStateRestore restorer;
327+
debugManager.flags.ExperimentalUSMAllocationReuseCleaner.set(1);
328+
329+
VariableBackup<decltype(NEO::Thread::createFunc)> funcBackup{&NEO::Thread::createFunc, [](void *(*func)(void *), void *arg) -> std::unique_ptr<Thread> { return nullptr; }};
330+
MockExecutionEnvironment executionEnvironment{};
331+
executionEnvironment.initializeUnifiedMemoryReuseCleaner(false);
332+
auto cleaner = executionEnvironment.unifiedMemoryReuseCleaner.get();
333+
334+
EXPECT_NE(cleaner, nullptr);
335+
}
336+
325337
TEST(ExecutionEnvironment, givenNeoCalEnabledWhenCreateExecutionEnvironmentThenSetDebugVariables) {
326338
const std::unordered_map<std::string, int32_t> config = {
327339
{"UseKmdMigration", 0},

0 commit comments

Comments
 (0)