refactor: Allow debug key to force USM cleaner with ULLS light
Related-To: NEO-13922 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
parent
1eafbc30f8
commit
20d29207cd
|
@ -152,9 +152,9 @@ DirectSubmissionController *ExecutionEnvironment::initializeDirectSubmissionCont
|
|||
return directSubmissionController.get();
|
||||
}
|
||||
|
||||
void ExecutionEnvironment::initializeUnifiedMemoryReuseCleaner() {
|
||||
void ExecutionEnvironment::initializeUnifiedMemoryReuseCleaner(bool enable) {
|
||||
std::lock_guard<std::mutex> lock(initializeUnifiedMemoryReuseCleanerMutex);
|
||||
auto initializeUnifiedMemoryReuseCleaner = UnifiedMemoryReuseCleaner::isSupported();
|
||||
auto initializeUnifiedMemoryReuseCleaner = UnifiedMemoryReuseCleaner::isSupported() && enable;
|
||||
|
||||
if (debugManager.flags.ExperimentalUSMAllocationReuseCleaner.get() != -1) {
|
||||
initializeUnifiedMemoryReuseCleaner = debugManager.flags.ExperimentalUSMAllocationReuseCleaner.get() == 1;
|
||||
|
|
|
@ -66,7 +66,7 @@ class ExecutionEnvironment : public ReferenceTrackedObject<ExecutionEnvironment>
|
|||
bool isFP64EmulationEnabled() const { return fp64EmulationEnabled; }
|
||||
|
||||
DirectSubmissionController *initializeDirectSubmissionController();
|
||||
void initializeUnifiedMemoryReuseCleaner();
|
||||
void initializeUnifiedMemoryReuseCleaner(bool enable);
|
||||
|
||||
std::unique_ptr<MemoryManager> memoryManager;
|
||||
std::unique_ptr<UnifiedMemoryReuseCleaner> unifiedMemoryReuseCleaner;
|
||||
|
|
|
@ -845,9 +845,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) {
|
|||
this->usmDeviceAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableDeviceAllocationCache.get();
|
||||
}
|
||||
if (this->usmDeviceAllocationsCacheEnabled) {
|
||||
if (!device.isAnyDirectSubmissionEnabled(true)) {
|
||||
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner();
|
||||
}
|
||||
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true));
|
||||
this->initUsmDeviceAllocationsCache(device);
|
||||
}
|
||||
|
||||
|
@ -856,9 +854,7 @@ void SVMAllocsManager::initUsmAllocationsCaches(Device &device) {
|
|||
this->usmHostAllocationsCacheEnabled = !!debugManager.flags.ExperimentalEnableHostAllocationCache.get();
|
||||
}
|
||||
if (this->usmHostAllocationsCacheEnabled) {
|
||||
if (!device.isAnyDirectSubmissionEnabled(true)) {
|
||||
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner();
|
||||
}
|
||||
device.getExecutionEnvironment()->initializeUnifiedMemoryReuseCleaner(!device.isAnyDirectSubmissionEnabled(true));
|
||||
this->initUsmHostAllocationsCache();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -304,11 +304,11 @@ TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetWhenInit
|
|||
|
||||
VariableBackup<decltype(NEO::Thread::createFunc)> funcBackup{&NEO::Thread::createFunc, [](void *(*func)(void *), void *arg) -> std::unique_ptr<Thread> { return nullptr; }};
|
||||
MockExecutionEnvironment executionEnvironment{};
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
|
||||
auto cleaner = executionEnvironment.unifiedMemoryReuseCleaner.get();
|
||||
|
||||
EXPECT_NE(cleaner, nullptr);
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
|
||||
EXPECT_EQ(cleaner, executionEnvironment.unifiedMemoryReuseCleaner.get());
|
||||
}
|
||||
|
||||
|
@ -317,11 +317,23 @@ TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetZeroWhen
|
|||
debugManager.flags.ExperimentalUSMAllocationReuseCleaner.set(0);
|
||||
|
||||
MockExecutionEnvironment executionEnvironment{};
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner();
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner(true);
|
||||
|
||||
EXPECT_EQ(nullptr, executionEnvironment.unifiedMemoryReuseCleaner.get());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenExperimentalUSMAllocationReuseCleanerSetAndNotEnabledWhenInitializeUnifiedMemoryReuseCleanerThenForceInit) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.ExperimentalUSMAllocationReuseCleaner.set(1);
|
||||
|
||||
VariableBackup<decltype(NEO::Thread::createFunc)> funcBackup{&NEO::Thread::createFunc, [](void *(*func)(void *), void *arg) -> std::unique_ptr<Thread> { return nullptr; }};
|
||||
MockExecutionEnvironment executionEnvironment{};
|
||||
executionEnvironment.initializeUnifiedMemoryReuseCleaner(false);
|
||||
auto cleaner = executionEnvironment.unifiedMemoryReuseCleaner.get();
|
||||
|
||||
EXPECT_NE(cleaner, nullptr);
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenNeoCalEnabledWhenCreateExecutionEnvironmentThenSetDebugVariables) {
|
||||
const std::unordered_map<std::string, int32_t> config = {
|
||||
{"UseKmdMigration", 0},
|
||||
|
|
Loading…
Reference in New Issue