From 630cbe8e4166a54a892a205683fc71830ca75865 Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Fri, 20 Dec 2024 01:53:44 +0100 Subject: [PATCH] Revert "fix: ensure regular event completion in in-order mode 2" This reverts commit 9c2e5f55681da09bf2353475a1c802c4bd1f04ae. Signed-off-by: Compute-Runtime-Validation --- level_zero/core/source/cmdlist/cmdlist_hw.inl | 2 +- level_zero/core/source/event/event_imp.h | 2 +- level_zero/core/source/event/event_impl.inl | 6 +-- .../cmdlist/test_in_order_cmdlist_1.cpp | 50 ++++--------------- 4 files changed, 16 insertions(+), 44 deletions(-) diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index f4568ce963..e5e383a835 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -195,7 +195,7 @@ void CommandListCoreFamily::handleInOrderDependencyCounter(Event this->commandContainer.addToResidencyContainer(inOrderExecInfo->getHostCounterAllocation()); if (signalEvent) { - if (signalEvent->isCounterBased() || nonWalkerInOrderCmdsChaining || isImmediateType()) { + if (signalEvent->isCounterBased() || nonWalkerInOrderCmdsChaining) { signalEvent->updateInOrderExecState(inOrderExecInfo, inOrderExecInfo->getCounterValue(), inOrderExecInfo->getAllocationOffset()); } else { signalEvent->unsetInOrderExecInfo(); diff --git a/level_zero/core/source/event/event_imp.h b/level_zero/core/source/event/event_imp.h index 8a5fee8448..d8685fb7e7 100644 --- a/level_zero/core/source/event/event_imp.h +++ b/level_zero/core/source/event/event_imp.h @@ -78,7 +78,7 @@ struct EventImp : public Event { const uint32_t count, const ze_kernel_timestamp_result_t *pKernelTimestampsBuffer); void copyDataToEventAlloc(void *dstHostAddr, uint64_t dstGpuVa, size_t copySize, const void *copyData); void copyTbxData(uint64_t dstGpuVa, size_t copySize); - void synchronizeTimestampCompletionWithTimeout(); + void synchronizeCounterBasedTimestampCompletionWithTimeout(); }; } // namespace L0 diff --git a/level_zero/core/source/event/event_impl.inl b/level_zero/core/source/event/event_impl.inl index 6a879eb772..8e53fa3618 100644 --- a/level_zero/core/source/event/event_impl.inl +++ b/level_zero/core/source/event/event_impl.inl @@ -762,7 +762,7 @@ void EventImp::resetDeviceCompletionData(bool resetAllPackets) { } template -void EventImp::synchronizeTimestampCompletionWithTimeout() { +void EventImp::synchronizeCounterBasedTimestampCompletionWithTimeout() { std::chrono::high_resolution_clock::time_point startTime = std::chrono::high_resolution_clock::now(); constexpr uint64_t timeoutMs = 1000 * 5; // 5s uint64_t timeDiff = 0; @@ -787,8 +787,8 @@ ze_result_t EventImp::queryKernelTimestamp(ze_kernel_timestamp_result_ assignKernelEventCompletionData(getHostAddress()); calculateProfilingData(); - if (contextEndTS == Event::STATE_CLEARED || contextEndTS == 0) { - synchronizeTimestampCompletionWithTimeout(); + if (isCounterBased() && (contextEndTS == Event::STATE_CLEARED || contextEndTS == 0)) { + synchronizeCounterBasedTimestampCompletionWithTimeout(); } auto eventTsSetFunc = [&](uint64_t ×tampFieldToCopy, uint64_t ×tampFieldForWriting) { diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp index 533021bc3a..ec7f59b194 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist_1.cpp @@ -460,7 +460,7 @@ HWTEST2_F(InOrderCmdListTests, givenCounterBasedTimestampEventWhenQueryingTimest uint64_t notReadyData = Event::STATE_CLEARED; void assignKernelEventCompletionData(void *address) override { - auto completionAddress = reinterpret_cast(ptrOffset(getHostAddress(), NEO::TimestampPackets::getContextEndOffset())); + auto completionAddress = reinterpret_cast(getCompletionFieldHostAddress()); assignKernelEventCompletionDataCalled++; if (assignKernelEventCompletionDataCalled <= assignKernelEventCompletionDataFailCounter) { *completionAddress = notReadyData; @@ -477,7 +477,6 @@ HWTEST2_F(InOrderCmdListTests, givenCounterBasedTimestampEventWhenQueryingTimest auto eventPool = createEvents(1, true); auto event1 = std::make_unique(eventPool.get(), device); auto event2 = std::make_unique(eventPool.get(), device); - auto event3 = std::make_unique(eventPool.get(), device); event1->enableCounterBasedMode(true, ZE_EVENT_POOL_COUNTER_BASED_EXP_FLAG_IMMEDIATE); event1->assignKernelEventCompletionDataFailCounter = 2; @@ -488,37 +487,26 @@ HWTEST2_F(InOrderCmdListTests, givenCounterBasedTimestampEventWhenQueryingTimest event2->setUsingContextEndOffset(true); event2->notReadyData = 0; - event3->disableImplicitCounterBasedMode(); - event3->assignKernelEventCompletionDataFailCounter = 2; - event3->setUsingContextEndOffset(true); - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, event1->toHandle(), 0, nullptr, launchParams, false); cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, event2->toHandle(), 0, nullptr, launchParams, false); - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, event3->toHandle(), 0, nullptr, launchParams, false); *reinterpret_cast(event1->getCompletionFieldHostAddress()) = Event::STATE_CLEARED; *reinterpret_cast(event2->getCompletionFieldHostAddress()) = 0; - *reinterpret_cast(event3->getCompletionFieldHostAddress()) = 0; event1->getInOrderExecInfo()->setLastWaitedCounterValue(2); event2->getInOrderExecInfo()->setLastWaitedCounterValue(2); - event3->getInOrderExecInfo()->setLastWaitedCounterValue(3); EXPECT_EQ(ZE_RESULT_SUCCESS, event1->queryStatus()); EXPECT_EQ(ZE_RESULT_SUCCESS, event2->queryStatus()); - EXPECT_EQ(ZE_RESULT_SUCCESS, event3->queryStatus()); ze_kernel_timestamp_result_t kernelTimestamps = {}; EXPECT_EQ(0u, event1->assignKernelEventCompletionDataCalled); EXPECT_EQ(0u, event2->assignKernelEventCompletionDataCalled); - EXPECT_EQ(0u, event3->assignKernelEventCompletionDataCalled); event1->queryKernelTimestamp(&kernelTimestamps); event2->queryKernelTimestamp(&kernelTimestamps); - event3->queryKernelTimestamp(&kernelTimestamps); EXPECT_EQ(event1->assignKernelEventCompletionDataFailCounter + 1, event1->assignKernelEventCompletionDataCalled); EXPECT_EQ(event2->assignKernelEventCompletionDataFailCounter + 1, event2->assignKernelEventCompletionDataCalled); - EXPECT_EQ(event3->assignKernelEventCompletionDataFailCounter + 1, event3->assignKernelEventCompletionDataCalled); } HWTEST2_F(InOrderCmdListTests, givenInterruptableEventsWhenExecutingOnDifferentCsrThenAssignItToEventOnExecute, IsAtLeastXeHpCore) { @@ -799,16 +787,16 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderEventWhenAppendEventResetCalledThenRe } HWTEST2_F(InOrderCmdListTests, givenRegularEventWithTemporaryInOrderDataAssignmentWhenCallingSynchronizeOrResetThenUnset, MatchAny) { - auto cmdList = createRegularCmdList(false); + auto immCmdList = createImmCmdList(); - auto hostAddress = static_cast(cmdList->inOrderExecInfo->getDeviceCounterAllocation()->getUnderlyingBuffer()); + auto hostAddress = static_cast(immCmdList->inOrderExecInfo->getDeviceCounterAllocation()->getUnderlyingBuffer()); auto eventPool = createEvents(1, true); events[0]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); - auto nonWalkerSignallingSupported = cmdList->isInOrderNonWalkerSignalingRequired(events[0].get()); + auto nonWalkerSignallingSupported = immCmdList->isInOrderNonWalkerSignalingRequired(events[0].get()); - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); + immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); EXPECT_EQ(nonWalkerSignallingSupported, events[0]->inOrderExecInfo.get() != nullptr); @@ -824,7 +812,7 @@ HWTEST2_F(InOrderCmdListTests, givenRegularEventWithTemporaryInOrderDataAssignme EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->hostSynchronize(1)); EXPECT_EQ(events[0]->inOrderExecInfo.get(), nullptr); - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); + immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); EXPECT_EQ(nonWalkerSignallingSupported, events[0]->inOrderExecInfo.get() != nullptr); EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->reset()); @@ -834,16 +822,16 @@ HWTEST2_F(InOrderCmdListTests, givenRegularEventWithTemporaryInOrderDataAssignme HWTEST2_F(InOrderCmdListTests, givenInOrderModeWheUsingRegularEventThenSetInOrderParamsOnlyWhenChainingIsRequired, MatchAny) { uint32_t counterOffset = 64; - auto cmdList = createRegularCmdList(false); - cmdList->inOrderExecInfo->setAllocationOffset(counterOffset); + auto immCmdList = createImmCmdList(); + immCmdList->inOrderExecInfo->setAllocationOffset(counterOffset); auto eventPool = createEvents(1, false); events[0]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); + immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); EXPECT_FALSE(events[0]->isCounterBased()); - if (cmdList->isInOrderNonWalkerSignalingRequired(events[0].get())) { + if (immCmdList->isInOrderNonWalkerSignalingRequired(events[0].get())) { EXPECT_EQ(events[0]->inOrderExecSignalValue, 1u); EXPECT_NE(events[0]->inOrderExecInfo.get(), nullptr); EXPECT_EQ(events[0]->inOrderAllocationOffset, counterOffset); @@ -853,7 +841,7 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWheUsingRegularEventThenSetInOrde EXPECT_EQ(events[0]->inOrderAllocationOffset, 0u); } - auto copyImmCmdList = createRegularCmdList(true); + auto copyImmCmdList = createCopyOnlyImmCmdList(); uint32_t copyData = 0; void *deviceAlloc = nullptr; @@ -871,19 +859,6 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWheUsingRegularEventThenSetInOrde context->freeMem(deviceAlloc); } -HWTEST2_F(InOrderCmdListTests, givenInOrderModeWheUsingRegularEventAndImmediateCmdListThenSetInOrderParams, MatchAny) { - auto cmdList = createImmCmdList(); - - auto eventPool = createEvents(1, false); - events[0]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); - - cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false); - EXPECT_FALSE(events[0]->isCounterBased()); - - EXPECT_EQ(events[0]->inOrderExecSignalValue, 1u); - EXPECT_NE(events[0]->inOrderExecInfo.get(), nullptr); -} - HWTEST2_F(InOrderCmdListTests, givenRegularEventWithInOrderExecInfoWhenReusedOnRegularCmdListThenUnsetInOrderData, MatchAny) { auto immCmdList = createImmCmdList(); @@ -891,9 +866,6 @@ HWTEST2_F(InOrderCmdListTests, givenRegularEventWithInOrderExecInfoWhenReusedOnR events[0]->makeCounterBasedImplicitlyDisabled(eventPool->getAllocation()); auto nonWalkerSignallingSupported = immCmdList->isInOrderNonWalkerSignalingRequired(events[0].get()); - if (!nonWalkerSignallingSupported) { - GTEST_SKIP(); - } EXPECT_TRUE(immCmdList->isInOrderExecutionEnabled());