diff --git a/level_zero/core/source/device/device_imp.cpp b/level_zero/core/source/device/device_imp.cpp index caeb9713e4..a6bbc805e6 100644 --- a/level_zero/core/source/device/device_imp.cpp +++ b/level_zero/core/source/device/device_imp.cpp @@ -870,8 +870,7 @@ ze_result_t DeviceImp::getProperties(ze_device_properties_t *pDeviceProperties) if (isSubdevice) { DriverHandleImp *driverHandleImp = static_cast(driverHandle); - const auto &isReturnSubDevicesAsApiDevices = NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.get(); - if (isReturnSubDevicesAsApiDevices != 1 && driverHandleImp->deviceHierarchyMode != L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT) { + if (driverHandleImp->deviceHierarchyMode != L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT) { pDeviceProperties->flags |= ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE; } } diff --git a/level_zero/core/source/driver/driver_handle_imp.cpp b/level_zero/core/source/driver/driver_handle_imp.cpp index ebd2d6885e..88137a9cef 100644 --- a/level_zero/core/source/driver/driver_handle_imp.cpp +++ b/level_zero/core/source/driver/driver_handle_imp.cpp @@ -373,10 +373,6 @@ ze_result_t DriverHandleImp::parseAffinityMaskCombined(uint32_t *pCount, ze_devi ze_result_t DriverHandleImp::getDevice(uint32_t *pCount, ze_device_handle_t *phDevices) { bool exposeSubDevices = false; - if (NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.get() != -1) { - exposeSubDevices = NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.get(); - } - // If the user has requested FLAT device hierarchy model, then report all the sub devices as devices. if (this->deviceHierarchyMode == L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT || this->deviceHierarchyMode == L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_COMBINED) { exposeSubDevices = true; @@ -899,8 +895,8 @@ ze_result_t DriverHandleImp::fabricVertexGetExp(uint32_t *pCount, ze_fabric_vert } bool exposeSubDevices = false; - if (NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.get() != -1) { - exposeSubDevices = NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.get(); + if (deviceHierarchyMode == L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT) { + exposeSubDevices = true; } if (*pCount == 0) { diff --git a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp index 2c1ceddb20..2925a08517 100644 --- a/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp +++ b/level_zero/core/test/unit_tests/sources/device/test_l0_device.cpp @@ -4853,106 +4853,6 @@ TEST(DeviceReturnCompositeHierarchyTest, GivenCompositeHierarchyIsSetThenGetRoot multiDeviceFixture.tearDown(); } -TEST(DeviceReturnSubDevicesAsApiDevicesTest, GivenReturnSubDevicesAsApiDevicesIsSetThenFlagsOfDevicePropertiesIsCorrect) { - - DebugManagerStateRestore restorer; - NEO::DebugManager.flags.ZE_AFFINITY_MASK.set("0,1.1,2"); - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(1); - MultiDeviceFixture multiDeviceFixture{}; - multiDeviceFixture.setUp(); - - uint32_t count = 0; - std::vector hDevices; - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, nullptr), ZE_RESULT_SUCCESS); - - // mask is "0,1.1,2", but with ReturnSubDevicesAsApiDevices 1.1 - // is not valid, so expected count is 2. - EXPECT_EQ(count, 2u); - - hDevices.resize(count); - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, hDevices.data()), ZE_RESULT_SUCCESS); - - for (auto &hDevice : hDevices) { - ze_device_properties_t deviceProperties{}; - deviceProperties.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES; - EXPECT_EQ(Device::fromHandle(hDevice)->getProperties(&deviceProperties), ZE_RESULT_SUCCESS); - EXPECT_NE(ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE, deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE); - - uint32_t subDeviceCount = 0; - EXPECT_EQ(Device::fromHandle(hDevice)->getSubDevices(&subDeviceCount, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(subDeviceCount, 0u); - } - - multiDeviceFixture.tearDown(); -} - -TEST(DeviceReturnSubDevicesAsApiDevicesTest, GivenReturnSubDevicesAsApiDevicesIsNotSetThenFlagsOfDevicePropertiesIsCorrect) { - - DebugManagerStateRestore restorer; - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(0); - MultiDeviceFixture multiDeviceFixture{}; - multiDeviceFixture.setUp(); - - uint32_t count = 0; - std::vector hDevices; - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(count, multiDeviceFixture.numRootDevices); - - hDevices.resize(count); - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, hDevices.data()), ZE_RESULT_SUCCESS); - - for (auto &hDevice : hDevices) { - - uint32_t subDeviceCount = 0; - EXPECT_EQ(Device::fromHandle(hDevice)->getSubDevices(&subDeviceCount, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(subDeviceCount, multiDeviceFixture.numSubDevices); - std::vector hSubDevices(multiDeviceFixture.numSubDevices); - EXPECT_EQ(Device::fromHandle(hDevice)->getSubDevices(&subDeviceCount, hSubDevices.data()), ZE_RESULT_SUCCESS); - - for (auto &hSubDevice : hSubDevices) { - ze_device_properties_t deviceProperties{}; - deviceProperties.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES; - EXPECT_EQ(Device::fromHandle(hSubDevice)->getProperties(&deviceProperties), ZE_RESULT_SUCCESS); - EXPECT_EQ(ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE, deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE); - } - } - - multiDeviceFixture.tearDown(); -} - -TEST(DeviceReturnSubDevicesAsApiDevicesTest, GivenReturnSubDevicesAsApiDevicesIsDefaultSetThenFlagsOfDevicePropertiesIsCorrect) { - DebugManagerStateRestore restorer; - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(-1); - MultiDeviceFixture multiDeviceFixture{}; - multiDeviceFixture.setUp(); - - uint32_t count = 0; - std::vector hDevices; - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(count, multiDeviceFixture.numRootDevices); - - hDevices.resize(count); - EXPECT_EQ(multiDeviceFixture.driverHandle->getDevice(&count, hDevices.data()), ZE_RESULT_SUCCESS); - - for (auto &hDevice : hDevices) { - - uint32_t subDeviceCount = 0; - EXPECT_EQ(Device::fromHandle(hDevice)->getSubDevices(&subDeviceCount, nullptr), ZE_RESULT_SUCCESS); - EXPECT_EQ(subDeviceCount, multiDeviceFixture.numSubDevices); - std::vector hSubDevices(multiDeviceFixture.numSubDevices); - EXPECT_EQ(Device::fromHandle(hDevice)->getSubDevices(&subDeviceCount, hSubDevices.data()), ZE_RESULT_SUCCESS); - - for (auto &hSubDevice : hSubDevices) { - ze_device_properties_t deviceProperties{}; - deviceProperties.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES; - EXPECT_EQ(Device::fromHandle(hSubDevice)->getProperties(&deviceProperties), ZE_RESULT_SUCCESS); - EXPECT_EQ(ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE, deviceProperties.flags & ZE_DEVICE_PROPERTY_FLAG_SUBDEVICE); - } - } - - multiDeviceFixture.tearDown(); -} - TEST_F(DeviceTest, GivenValidDeviceWhenQueryingKernelTimestampsProptertiesThenCorrectPropertiesIsReturned) { ze_device_properties_t devProps; ze_event_query_kernel_timestamps_ext_properties_t tsProps; diff --git a/level_zero/core/test/unit_tests/sources/event/test_event.cpp b/level_zero/core/test/unit_tests/sources/event/test_event.cpp index 7180e3b772..831779251a 100644 --- a/level_zero/core/test/unit_tests/sources/event/test_event.cpp +++ b/level_zero/core/test/unit_tests/sources/event/test_event.cpp @@ -2539,9 +2539,8 @@ TEST_F(TimestampEventCreate, givenEventWhenQueryKernelTimestampThenNotReadyRetur EXPECT_EQ(0u, resultTimestamp.global.kernelEnd); } -TEST_F(EventPoolCreateMultiDevice, givenReturnSubDevicesAsApiDevicesWhenCallZeGetDevicesThenSubDevicesAreReturnedAsSeparateDevices) { - DebugManagerStateRestore restorer; - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(1); +TEST_F(EventPoolCreateMultiDevice, givenFlatHierarchyWhenCallZeGetDevicesThenSubDevicesAreReturnedAsSeparateDevices) { + this->driverHandle->deviceHierarchyMode = L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT; uint32_t deviceCount = 0; ze_result_t result = zeDeviceGet(driverHandle.get(), &deviceCount, nullptr); diff --git a/level_zero/core/test/unit_tests/sources/fabric/test_fabric.cpp b/level_zero/core/test/unit_tests/sources/fabric/test_fabric.cpp index 302b425f99..0e6b09f89f 100644 --- a/level_zero/core/test/unit_tests/sources/fabric/test_fabric.cpp +++ b/level_zero/core/test/unit_tests/sources/fabric/test_fabric.cpp @@ -216,27 +216,26 @@ TEST_F(FabricVertexFixture, GivenDevicesAreCreatedWhenFabricVertexIsNotSetToDevi EXPECT_EQ(hVertex, nullptr); } -class FabricVertexSubdeviceAsDeviceTestFixture : public MultiDeviceFixture, - public ::testing::Test { +class FabricVertexFlatDeviceTestFixture : public MultiDeviceFixtureHierarchy, + public ::testing::Test { void SetUp() override { NEO::DebugManager.flags.ZE_AFFINITY_MASK.set("0,1.1,2"); - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(1); - MultiDeviceFixture::setUp(); + MultiDeviceFixtureHierarchy::setUp(); } void TearDown() override { - MultiDeviceFixture::tearDown(); + MultiDeviceFixtureHierarchy::tearDown(); } DebugManagerStateRestore restorer; }; -TEST_F(FabricVertexSubdeviceAsDeviceTestFixture, GivenReturnSubDevicesAsApiDevicesIsSetWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { +TEST_F(FabricVertexFlatDeviceTestFixture, GivenFlatHierarchyWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { uint32_t count = 0; std::vector phVertices; EXPECT_EQ(driverHandle->fabricVertexGetExp(&count, nullptr), ZE_RESULT_SUCCESS); // only 2 vertexes for mask "0,1.1,2": // 0 and 2 - // 1.1 is ignored with ReturnSubDevicesAsApiDevices + // 1.1 is ignored in FlatHierarchy uint32_t expectedVertexes = 2u; EXPECT_EQ(count, expectedVertexes); @@ -260,7 +259,6 @@ class FabricVertexTestFixture : public MultiDeviceFixture, public ::testing::Test { void SetUp() override { NEO::DebugManager.flags.ZE_AFFINITY_MASK.set("0,1.1,2"); - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(0); MultiDeviceFixture::setUp(); } @@ -270,10 +268,9 @@ class FabricVertexTestFixture : public MultiDeviceFixture, DebugManagerStateRestore restorer; }; -TEST_F(FabricVertexTestFixture, GivenReturnSubDevicesAsApiDevicesIsSetToFalseWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { +TEST_F(FabricVertexTestFixture, GivenCompositeHierarchyWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { uint32_t count = 0; std::vector phVertices; - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(0); EXPECT_EQ(driverHandle->fabricVertexGetExp(&count, nullptr), ZE_RESULT_SUCCESS); uint32_t expectedVertexes = 3u; EXPECT_EQ(count, expectedVertexes); @@ -321,10 +318,10 @@ TEST_F(FabricVertexTestFixture, GivenReturnSubDevicesAsApiDevicesIsSetToFalseWhe EXPECT_EQ(countSubDevices, numSubDevices); } -TEST_F(FabricVertexTestFixture, GivenReturnSubDevicesAsApiDevicesIsSetToTrueWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { +TEST_F(FabricVertexTestFixture, GivenFlatHierarchyWhenFabricVerticesGetExpIsCalledCorrectVerticesAreReturned) { uint32_t count = 0; std::vector phVertices; - NEO::DebugManager.flags.ReturnSubDevicesAsApiDevices.set(1); + this->driverHandle->deviceHierarchyMode = L0::L0DeviceHierarchyMode::L0_DEVICE_HIERARCHY_FLAT; EXPECT_EQ(driverHandle->fabricVertexGetExp(&count, nullptr), ZE_RESULT_SUCCESS); uint32_t expectedVertexes = 5u; EXPECT_EQ(count, expectedVertexes); diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index e04d6414f1..779995bf9c 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -256,15 +256,7 @@ cl_int CL_API_CALL clGetDeviceIDs(cl_platform_id platform, cl_uint retNum = 0; for (auto platformDeviceIndex = 0u; platformDeviceIndex < numDev; platformDeviceIndex++) { - bool exposeSubDevices = false; - - if (DebugManager.flags.ReturnSubDevicesAsApiDevices.get() != -1) { - exposeSubDevices = DebugManager.flags.ReturnSubDevicesAsApiDevices.get(); - } - - if (pPlatform->peekExecutionEnvironment()->isExposingSubDevicesAsDevices()) { - exposeSubDevices = true; - } + bool exposeSubDevices = pPlatform->peekExecutionEnvironment()->isExposingSubDevicesAsDevices(); ClDevice *device = pPlatform->getClDevice(platformDeviceIndex); UNRECOVERABLE_IF(device == nullptr); diff --git a/opencl/test/unit_test/api/cl_create_sub_devices_tests.inl b/opencl/test/unit_test/api/cl_create_sub_devices_tests.inl index 5e4c0dc5b0..8eb63f1bdf 100644 --- a/opencl/test/unit_test/api/cl_create_sub_devices_tests.inl +++ b/opencl/test/unit_test/api/cl_create_sub_devices_tests.inl @@ -133,10 +133,9 @@ TEST_F(ClCreateSubDevicesTests, GivenValidInputWhenCreatingSubDevicesThenDeviceA EXPECT_EQ(2, device->getSubDevice(1)->getRefApiCount()); } -TEST_F(ClCreateSubDevicesTests, GivenValidInputAndReturnSubDevicesAsApiDevicesIsSetWhenCreatingSubDevicesThenDeviceApiReferenceCountIsNotIncreased) { - std::unordered_map mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "COMPOSITE"}}; +TEST_F(ClCreateSubDevicesTests, GivenValidInputAndFlatHierarchyWhenCreatingSubDevicesThenDeviceApiReferenceCountIsNotIncreased) { + std::unordered_map mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "FLAT"}}; VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); - DebugManager.flags.ReturnSubDevicesAsApiDevices.set(true); setup(2); EXPECT_EQ(0, device->getSubDevice(0)->getRefApiCount()); @@ -155,6 +154,8 @@ TEST_F(ClCreateSubDevicesTests, GivenValidInputAndReturnSubDevicesAsApiDevicesIs struct ClCreateSubDevicesDeviceInfoTests : ClCreateSubDevicesTests { void setup(int numberOfDevices) { + std::unordered_map mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "COMPOSITE"}}; + VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); ClCreateSubDevicesTests::setup(numberOfDevices); expectedSubDeviceParentDevice = device.get(); expectedRootDevicePartitionMaxSubDevices = numberOfDevices; @@ -189,7 +190,6 @@ struct ClCreateSubDevicesDeviceInfoTests : ClCreateSubDevicesTests { }; TEST_F(ClCreateSubDevicesDeviceInfoTests, WhenGettingSubDeviceRelatedDeviceInfoThenCorrectValuesAreSet) { - DebugManager.flags.ReturnSubDevicesAsApiDevices.set(false); setup(4); auto &rootDeviceInfo = device->getDeviceInfo(); @@ -261,7 +261,6 @@ TEST_F(ClCreateSubDevicesDeviceInfoTests, GivenRootDeviceWithoutSubDevicesWhenGe } TEST_F(ClCreateSubDevicesDeviceInfoTests, WhenGettingSubDeviceRelatedDeviceInfoViaApiThenCorrectValuesAreSet) { - DebugManager.flags.ReturnSubDevicesAsApiDevices.set(false); setup(4); size_t partitionPropertiesReturnValueSize = 0; diff --git a/opencl/test/unit_test/api/cl_get_device_ids_tests.inl b/opencl/test/unit_test/api/cl_get_device_ids_tests.inl index 3c2c894282..2961a332af 100644 --- a/opencl/test/unit_test/api/cl_get_device_ids_tests.inl +++ b/opencl/test/unit_test/api/cl_get_device_ids_tests.inl @@ -147,7 +147,9 @@ TEST(clGetDeviceIDsTest, givenMultipleRootDevicesWhenGetDeviceIdsButNumEntriesIs EXPECT_EQ(devices[numEntries], dummyDevice); } -TEST(clGetDeviceIDsTest, givenReturnSubDevicesAsApiDevicesWhenCallClGetDeviceIDsThenSubDevicesAreReturnedAsSeparateClDevices) { +TEST(clGetDeviceIDsTest, givenFlatHierarchyWhenCallClGetDeviceIDsThenSubDevicesAreReturnedAsSeparateClDevices) { + std::unordered_map mockableEnvs = {{"ZE_FLAT_DEVICE_HIERARCHY", "FLAT"}}; + VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); platformsImpl->clear(); constexpr auto numRootDevices = 3u; VariableBackup backup(&ultHwConfig); @@ -155,7 +157,6 @@ TEST(clGetDeviceIDsTest, givenReturnSubDevicesAsApiDevicesWhenCallClGetDeviceIDs DebugManagerStateRestore restorer; DebugManager.flags.CreateMultipleRootDevices.set(numRootDevices); DebugManager.flags.CreateMultipleSubDevices.set(numRootDevices); - DebugManager.flags.ReturnSubDevicesAsApiDevices.set(1); cl_uint maxNumDevices; auto retVal = clGetDeviceIDs(nullptr, CL_DEVICE_TYPE_ALL, 0, nullptr, &maxNumDevices); EXPECT_EQ(retVal, CL_SUCCESS); diff --git a/opencl/test/unit_test/device/sub_device_tests.cpp b/opencl/test/unit_test/device/sub_device_tests.cpp index da26daf53e..777b02d26a 100644 --- a/opencl/test/unit_test/device/sub_device_tests.cpp +++ b/opencl/test/unit_test/device/sub_device_tests.cpp @@ -170,9 +170,9 @@ TEST(SubDevicesTest, givenDeviceWithSubDevicesWhenSubDeviceInternalRefCountsAreC TEST(SubDevicesTest, givenClDeviceWithSubDevicesWhenSubDeviceInternalRefCountsAreChangedThenChangeIsPropagatedToRootDevice) { DebugManagerStateRestore restorer; DebugManager.flags.CreateMultipleSubDevices.set(2); - DebugManager.flags.ReturnSubDevicesAsApiDevices.set(false); VariableBackup mockDeviceFlagBackup(&MockDevice::createSingleDevice, false); auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + device->getExecutionEnvironment()->setExposeSubDevicesAsDevices(false); device->incRefInternal(); auto &subDevice = device->subDevices[0];