mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
refactor: unify device hierarchy mode
Related-To: GSD-9560 Signed-off-by: Jaroslaw Warchulski <jaroslaw.warchulski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
84b8622c16
commit
6a7bee67e9
@@ -361,19 +361,21 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerI
|
||||
executionEnvironment.initializeMemoryManager();
|
||||
EXPECT_NE(nullptr, executionEnvironment.memoryManager);
|
||||
}
|
||||
static_assert(sizeof(ExecutionEnvironment) == sizeof(std::unique_ptr<HardwareInfo>) +
|
||||
sizeof(std::vector<RootDeviceEnvironment>) +
|
||||
sizeof(std::unique_ptr<OsEnvironment>) +
|
||||
|
||||
static_assert(sizeof(ExecutionEnvironment) == sizeof(std::unique_ptr<MemoryManager>) +
|
||||
sizeof(std::unique_ptr<DirectSubmissionController>) +
|
||||
sizeof(std::unordered_map<uint32_t, uint32_t>) +
|
||||
2 * sizeof(bool) +
|
||||
sizeof(NEO::DebuggingMode) +
|
||||
(is64bit ? 18 : 14) +
|
||||
sizeof(std::mutex) +
|
||||
sizeof(std::unique_ptr<OsEnvironment>) +
|
||||
sizeof(std::vector<std::unique_ptr<RootDeviceEnvironment>>) +
|
||||
sizeof(std::unordered_map<uint32_t, std::tuple<uint32_t, uint32_t, uint32_t>>) +
|
||||
sizeof(std::vector<std::tuple<std::string, uint32_t>>) +
|
||||
sizeof(std::unordered_map<std::thread::id, std::string>) +
|
||||
sizeof(std::mutex),
|
||||
sizeof(std::mutex) +
|
||||
2 * sizeof(bool) +
|
||||
sizeof(DeviceHierarchyMode) +
|
||||
sizeof(DebuggingMode) +
|
||||
sizeof(std::unordered_map<uint32_t, uint32_t>) +
|
||||
sizeof(std::mutex) +
|
||||
sizeof(std::vector<std::tuple<std::string, uint32_t>>) +
|
||||
(is64bit ? 22 : 14),
|
||||
"New members detected in ExecutionEnvironment, please ensure that destruction sequence of objects is correct");
|
||||
|
||||
TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDestroyedThenDeleteSequenceIsSpecified) {
|
||||
@@ -547,7 +549,7 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenSettingFP64EmulationEnab
|
||||
EXPECT_TRUE(executionEnvironment.isFP64EmulationEnabled());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenCorrectZeAffinityMaskWhenExposeSubDevicesAsApiDevicesIsSetThenMapOfSubDeviceIndicesIsSet) {
|
||||
TEST(ExecutionEnvironment, givenCorrectZeAffinityMaskWithFlatOrCombinedHierarchyThenMapOfSubDeviceIndicesIsSet) {
|
||||
DebugManagerStateRestore restore;
|
||||
|
||||
debugManager.flags.CreateMultipleSubDevices.set(4);
|
||||
@@ -555,16 +557,20 @@ TEST(ExecutionEnvironment, givenCorrectZeAffinityMaskWhenExposeSubDevicesAsApiDe
|
||||
debugManager.flags.SetCommandStreamReceiver.set(1);
|
||||
|
||||
auto hwInfo = *defaultHwInfo;
|
||||
MockExecutionEnvironment executionEnvironment(&hwInfo);
|
||||
executionEnvironment.incRefInternal();
|
||||
executionEnvironment.setExposeSubDevicesAsDevices(true);
|
||||
|
||||
DeviceFactory::createDevices(executionEnvironment);
|
||||
DeviceHierarchyMode deviceHierarchyModes[] = {FLAT, COMBINED};
|
||||
for (auto deviceHierarchyMode : deviceHierarchyModes) {
|
||||
MockExecutionEnvironment executionEnvironment(&hwInfo);
|
||||
executionEnvironment.incRefInternal();
|
||||
executionEnvironment.setDeviceHierarchyMode(deviceHierarchyMode);
|
||||
|
||||
EXPECT_FALSE(executionEnvironment.mapOfSubDeviceIndices.empty());
|
||||
DeviceFactory::createDevices(executionEnvironment);
|
||||
|
||||
EXPECT_FALSE(executionEnvironment.mapOfSubDeviceIndices.empty());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenIncorrectZeAffinityMaskWhenExposeSubDevicesAsApiDevicesIsSetThenMapOfSubDeviceIndicesIsEmpty) {
|
||||
TEST(ExecutionEnvironment, givenIncorrectZeAffinityMaskWithFlatOrCombinedHierarchyThenMapOfSubDeviceIndicesIsEmpty) {
|
||||
DebugManagerStateRestore restore;
|
||||
|
||||
debugManager.flags.CreateMultipleSubDevices.set(4);
|
||||
@@ -572,13 +578,17 @@ TEST(ExecutionEnvironment, givenIncorrectZeAffinityMaskWhenExposeSubDevicesAsApi
|
||||
debugManager.flags.SetCommandStreamReceiver.set(1);
|
||||
|
||||
auto hwInfo = *defaultHwInfo;
|
||||
MockExecutionEnvironment executionEnvironment(&hwInfo);
|
||||
executionEnvironment.incRefInternal();
|
||||
executionEnvironment.setExposeSubDevicesAsDevices(true);
|
||||
|
||||
DeviceFactory::createDevices(executionEnvironment);
|
||||
DeviceHierarchyMode deviceHierarchyModes[] = {FLAT, COMBINED};
|
||||
for (auto deviceHierarchyMode : deviceHierarchyModes) {
|
||||
MockExecutionEnvironment executionEnvironment(&hwInfo);
|
||||
executionEnvironment.incRefInternal();
|
||||
executionEnvironment.setDeviceHierarchyMode(deviceHierarchyMode);
|
||||
|
||||
EXPECT_TRUE(executionEnvironment.mapOfSubDeviceIndices.empty());
|
||||
DeviceFactory::createDevices(executionEnvironment);
|
||||
|
||||
EXPECT_TRUE(executionEnvironment.mapOfSubDeviceIndices.empty());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenBuiltinsSetWhenRootDeviceEnvironmentIsReleasedThenBuiltinsIsReset) {
|
||||
@@ -627,46 +637,6 @@ TEST(ExecutionEnvironmentWithAILTests, whenAILConfigurationFailsOnInitProcessExe
|
||||
EXPECT_FALSE(rootDeviceEnvironment->initAilConfiguration());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironmentDeviceHierarchy, givenExecutionEnvironmentWithDefaultDeviceHierarchyThenExecutionEnvironmentIsInitializedCorrectly) {
|
||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
auto &gfxCoreHelper = executionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
|
||||
executionEnvironment.setDeviceHierarchy(gfxCoreHelper);
|
||||
EXPECT_EQ((strcmp(gfxCoreHelper.getDefaultDeviceHierarchy(), "COMPOSITE") != 0),
|
||||
executionEnvironment.isExposingSubDevicesAsDevices());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironmentDeviceHierarchy, givenExecutionEnvironmentWithCompositeDeviceHierarchyThenExposeSubDevicesAsDevicesIsFalse) {
|
||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
||||
std::unordered_map<std::string, std::string> mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "COMPOSITE"}};
|
||||
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment.setDeviceHierarchy(executionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>());
|
||||
EXPECT_FALSE(executionEnvironment.isExposingSubDevicesAsDevices());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironmentDeviceHierarchy, givenExecutionEnvironmentWithFlatDeviceHierarchyThenExposeSubDevicesAsDevicesIsTrue) {
|
||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
||||
std::unordered_map<std::string, std::string> mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "FLAT"}};
|
||||
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment.setDeviceHierarchy(executionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>());
|
||||
EXPECT_TRUE(executionEnvironment.isExposingSubDevicesAsDevices());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironmentDeviceHierarchy, givenExecutionEnvironmentWithCombinedDeviceHierarchyThenExposeSubDevicesAsDevicesIsTrue) {
|
||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
||||
std::unordered_map<std::string, std::string> mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "COMBINED"}};
|
||||
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
executionEnvironment.rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment.setDeviceHierarchy(executionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>());
|
||||
EXPECT_TRUE(executionEnvironment.isExposingSubDevicesAsDevices());
|
||||
}
|
||||
|
||||
TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenSetErrorDescriptionIsCalledThenGetErrorDescriptionGetsStringCorrectly) {
|
||||
std::string errorString = "we manually created error";
|
||||
std::string errorString2 = "here's the next string to pass with arguments: ";
|
||||
|
||||
Reference in New Issue
Block a user