From cdc725e0fefadb6e23338d78ab245189508e4470 Mon Sep 17 00:00:00 2001 From: Bartosz Dunajski Date: Thu, 29 May 2025 09:02:58 +0000 Subject: [PATCH] fix: flush split task count Related-To: NEO-14641 Signed-off-by: Bartosz Dunajski --- level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl | 6 +++--- .../unit_tests/xe_hpc_core/test_cmdqueue_xe_hpc_core.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl index 02329dbae1..1516b18db9 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl @@ -693,7 +693,7 @@ ze_result_t CommandListCoreFamilyImmediate::appendMemoryCopy( numWaitEvents, phWaitEvents, memoryCopyParams); } - return flushImmediate(ret, true, hasStallindCmds, memoryCopyParams.relaxedOrderingDispatch, NEO::AppendOperations::kernel, memoryCopyParams.copyOffloadAllowed, hSignalEvent, false, nullptr, nullptr); + return flushImmediate(ret, true, hasStallindCmds, memoryCopyParams.relaxedOrderingDispatch, NEO::AppendOperations::kernel, memoryCopyParams.copyOffloadAllowed, hSignalEvent, isSplitNeeded, nullptr, nullptr); } template @@ -751,7 +751,7 @@ ze_result_t CommandListCoreFamilyImmediate::appendMemoryCopyRegio hSignalEvent, numWaitEvents, phWaitEvents, memoryCopyParams); } - return flushImmediate(ret, true, hasStallindCmds, memoryCopyParams.relaxedOrderingDispatch, NEO::AppendOperations::kernel, memoryCopyParams.copyOffloadAllowed, hSignalEvent, false, nullptr, nullptr); + return flushImmediate(ret, true, hasStallindCmds, memoryCopyParams.relaxedOrderingDispatch, NEO::AppendOperations::kernel, memoryCopyParams.copyOffloadAllowed, hSignalEvent, isSplitNeeded, nullptr, nullptr); } template @@ -818,7 +818,7 @@ ze_result_t CommandListCoreFamilyImmediate::appendPageFaultCopy(N } else { ret = CommandListCoreFamily::appendPageFaultCopy(dstAllocation, srcAllocation, size, flushHost); } - return flushImmediate(ret, false, false, relaxedOrdering, NEO::AppendOperations::kernel, false, nullptr, false, nullptr, nullptr); + return flushImmediate(ret, false, false, relaxedOrdering, NEO::AppendOperations::kernel, false, nullptr, isSplitNeeded, nullptr, nullptr); } template diff --git a/level_zero/core/test/unit_tests/xe_hpc_core/test_cmdqueue_xe_hpc_core.cpp b/level_zero/core/test/unit_tests/xe_hpc_core/test_cmdqueue_xe_hpc_core.cpp index f7d95808ce..c9ed45466b 100644 --- a/level_zero/core/test/unit_tests/xe_hpc_core/test_cmdqueue_xe_hpc_core.cpp +++ b/level_zero/core/test/unit_tests/xe_hpc_core/test_cmdqueue_xe_hpc_core.cpp @@ -963,6 +963,7 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC auto result = commandList0->appendMemoryCopy(dstPtr, srcPtr, size, nullptr, 0, nullptr, copyParams); ASSERT_EQ(ZE_RESULT_SUCCESS, result); + auto csr0 = commandList0->getCsr(false); auto csr2 = static_cast(static_cast(testL0Device.get())->bcsSplit.cmdQs[2])->getCsr(); auto csr3 = static_cast(static_cast(testL0Device.get())->bcsSplit.cmdQs[3])->getCsr(); @@ -974,6 +975,7 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC GenCmdList cmdList; ASSERT_TRUE(FamilyType::Parse::parseCommandBuffer(cmdList, ptrOffset(cmdStream->getCpuBase(), offset), (cmdStream->getUsed() - offset))); + bool csr0TaskCountFound = false; bool csr2TaskCountFound = false; bool csr3TaskCountFound = false; @@ -983,10 +985,13 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC csr2TaskCountFound = true; } else if (miFlushCmd->getDestinationAddress() == csr3->getTagAllocation()->getGpuAddress()) { csr3TaskCountFound = true; + } else if (miFlushCmd->getDestinationAddress() == csr0->getTagAllocation()->getGpuAddress()) { + csr0TaskCountFound = true; } } } + EXPECT_TRUE(csr0TaskCountFound); EXPECT_TRUE(csr2TaskCountFound); EXPECT_TRUE(csr3TaskCountFound); @@ -1121,7 +1126,7 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC commandList0->appendMemoryCopy(dstPtr, srcPtr, size, nullptr, 0, nullptr, copyParams); EXPECT_TRUE(ultCsr->latestFlushedBatchBuffer.hasRelaxedOrderingDependencies); - EXPECT_FALSE(ultCsr->latestFlushedBatchBuffer.hasStallingCmds); + EXPECT_TRUE(ultCsr->latestFlushedBatchBuffer.hasStallingCmds); directSubmission->relaxedOrderingEnabled = false;