From eda13e675a6abcf7e05cfd09ae8fb9718c7b440b Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Wed, 21 Jun 2023 10:57:37 +0000 Subject: [PATCH] feature: enable dynamic post sync allocation layout Related-To: NEO-7966 Signed-off-by: Dunajski, Bartosz --- .../source/helpers/api_specific_config_l0.cpp | 2 +- .../core/test/unit_tests/mocks/mock_cmdlist.h | 1 + .../cmdlist/test_cmdlist_xehp_and_later.cpp | 15 +++++++ .../unit_tests/sources/event/test_event.cpp | 45 +++++++++++++++++++ .../helper/api_specific_config_l0_tests.cpp | 10 ++--- 5 files changed, 67 insertions(+), 6 deletions(-) diff --git a/level_zero/core/source/helpers/api_specific_config_l0.cpp b/level_zero/core/source/helpers/api_specific_config_l0.cpp index c88c8e1693..0c0ffd8209 100644 --- a/level_zero/core/source/helpers/api_specific_config_l0.cpp +++ b/level_zero/core/source/helpers/api_specific_config_l0.cpp @@ -36,7 +36,7 @@ bool ApiSpecificConfig::isDeviceAllocationCacheEnabled() { } bool ApiSpecificConfig::isDynamicPostSyncAllocLayoutEnabled() { - return (NEO::DebugManager.flags.EnableDynamicPostSyncAllocLayout.get() == 1); + return (NEO::DebugManager.flags.EnableDynamicPostSyncAllocLayout.get() != 0); } bool ApiSpecificConfig::isRelaxedOrderingEnabled() { diff --git a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h index c9fd9f20bc..2bca9dd8f8 100644 --- a/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h +++ b/level_zero/core/test/unit_tests/mocks/mock_cmdlist.h @@ -33,6 +33,7 @@ struct WhiteBox<::L0::CommandListCoreFamily> using BaseClass::allocateKernelPrivateMemoryIfNeeded; using BaseClass::appendBlitFill; using BaseClass::appendCopyImageBlit; + using BaseClass::appendDispatchOffsetRegister; using BaseClass::appendEventForProfiling; using BaseClass::appendEventForProfilingCopyCommand; using BaseClass::appendLaunchKernelWithParams; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp index 0826d8b2af..23c5f74b05 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_xehp_and_later.cpp @@ -90,6 +90,21 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandListTests, whenCommandListIsCreatedThenPCAnd EXPECT_TRUE(cmdSba->getDisableSupportForMultiGpuAtomicsForStatelessAccesses()); } +HWTEST2_F(CommandListTests, givenDebugFlagSetWhenCallingRegisterOffsetThenDontProgramMmio, IsAtLeastXeHpCore) { + DebugManagerStateRestore restorer; + DebugManager.flags.EnableDynamicPostSyncAllocLayout.set(0); + + auto pCommandList = std::make_unique>>(); + pCommandList->initialize(device, NEO::EngineGroupType::Compute, 0u); + auto &commandContainer = pCommandList->getCmdContainer(); + + auto offset = commandContainer.getCommandStream()->getUsed(); + + pCommandList->appendDispatchOffsetRegister(true, true); + + EXPECT_EQ(offset, commandContainer.getCommandStream()->getUsed()); +} + HWTEST2_F(CommandListTests, whenCommandListIsCreatedAndProgramExtendedPipeControlPriorToNonPipelinedStateCommandIsEnabledThenPCAndStateBaseAddressCmdsAreAddedAndCorrectlyProgrammed, IsAtLeastXeHpCore) { using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS; using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL; 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 1525d487c7..4e48d9f799 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 @@ -524,6 +524,37 @@ TEST_F(EventPoolIPCHandleTests, whenGettingIpcHandleForEventPoolWithDeviceAllocT using EventPoolCreateMultiDevice = Test; +HWTEST_F(EventPoolCreateMultiDevice, givenDebugFlagSetWhenCreatingEventThenUseTsPacketSize) { + DebugManager.flags.EnableDynamicPostSyncAllocLayout.set(0); + + ASSERT_NE(0u, driverHandle->devices.size()); + auto device = driverHandle->devices[0]; + + auto deviceHandle = device->toHandle(); + + ze_event_pool_desc_t eventPoolDesc = {ZE_STRUCTURE_TYPE_EVENT_POOL_DESC}; + eventPoolDesc.count = 1; + + ze_result_t result = ZE_RESULT_SUCCESS; + auto eventPool = L0::EventPool::create(device->getDriverHandle(), context, 1, &deviceHandle, &eventPoolDesc, result); + EXPECT_EQ(ZE_RESULT_SUCCESS, result); + ze_event_desc_t eventDesc = {}; + ze_event_handle_t hEvent = nullptr; + + result = eventPool->createEvent(&eventDesc, &hEvent); + ASSERT_EQ(ZE_RESULT_SUCCESS, result); + + auto eventObj = Event::fromHandle(hEvent); + + constexpr size_t timestampPacketTypeSize = sizeof(typename FamilyType::TimestampPacketType); + + EXPECT_EQ(timestampPacketTypeSize * 4, eventObj->getSinglePacketSize()); + + eventObj->destroy(); + + eventPool->destroy(); +} + TEST_F(EventPoolCreateMultiDevice, whenGettingIpcHandleForEventPoolWhenHostShareableMemoryIsFalseThenUnsuportedIsReturned) { uint32_t numEvents = 4; ze_event_pool_desc_t eventPoolDesc = { @@ -2732,6 +2763,20 @@ HWTEST_F(EventSizeTests, whenCreatingEventPoolThenUseCorrectSizeAndAlignment) { EXPECT_EQ(expectedSize, hostPtrDiff); } +HWTEST_F(EventSizeTests, givenDebugFlagSetWhenCreatingEventThenUseTsPacketSize) { + DebugManager.flags.EnableDynamicPostSyncAllocLayout.set(0); + + ze_result_t result = ZE_RESULT_SUCCESS; + eventPool.reset(EventPool::create(device->getDriverHandle(), context, 1, &hDevice, &eventPoolDesc, result)); + EXPECT_EQ(ZE_RESULT_SUCCESS, result); + + createEvents(); + + constexpr size_t timestampPacketTypeSize = sizeof(typename FamilyType::TimestampPacketType); + + EXPECT_EQ(timestampPacketTypeSize * 4, eventObj0->getSinglePacketSize()); +} + HWTEST_F(EventSizeTests, givenDebugFlagwhenCreatingEventPoolThenUseCorrectSizeAndAlignment) { auto &gfxCoreHelper = device->getGfxCoreHelper(); auto &hwInfo = device->getHwInfo(); diff --git a/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp b/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp index 58988d8e2e..5ec5a00eef 100644 --- a/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp +++ b/level_zero/core/test/unit_tests/sources/helper/api_specific_config_l0_tests.cpp @@ -51,14 +51,14 @@ TEST(ApiSpecificConfigL0Tests, WhenCheckingIfRelaxedOrderingIsEnabledThenReturnF EXPECT_FALSE(ApiSpecificConfig::isRelaxedOrderingEnabled()); } -TEST(ApiSpecificConfigL0Tests, GivenDebugFlagSetWhenCheckingIfDynamicPostSyncAllocLayoutEnabledThenReturnTrue) { +TEST(ApiSpecificConfigL0Tests, GivenDebugFlagSetWhenCheckingIfDynamicPostSyncAllocLayoutEnabledThenReturnFalse) { DebugManagerStateRestore restore; - EXPECT_FALSE(ApiSpecificConfig::isDynamicPostSyncAllocLayoutEnabled()); - - DebugManager.flags.EnableDynamicPostSyncAllocLayout.set(1); - EXPECT_TRUE(ApiSpecificConfig::isDynamicPostSyncAllocLayoutEnabled()); + + DebugManager.flags.EnableDynamicPostSyncAllocLayout.set(0); + + EXPECT_FALSE(ApiSpecificConfig::isDynamicPostSyncAllocLayoutEnabled()); } TEST(ImplicitScalingApiTests, givenLevelZeroApiUsedThenSupportEnabled) {