performance: dont wait on already waited counter

Related-To: GSD-11996

Signed-off-by: Szymon Morek <szymon.morek@intel.com>
This commit is contained in:
Szymon Morek
2025-11-24 14:15:49 +00:00
committed by Compute-Runtime-Automation
parent c3912acaca
commit 5790a624e1
2 changed files with 10 additions and 6 deletions

View File

@@ -1222,9 +1222,9 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::hostSynchronize(uint6
uint64_t inOrderSyncValue = this->inOrderExecInfo.get() ? inOrderExecInfo->getCounterValue() : 0;
if (inOrderWaitAllowed) {
if (inOrderWaitAllowed && !inOrderExecInfo->isCounterAlreadyDone(inOrderExecInfo->getCounterValue())) {
status = synchronizeInOrderExecution(timeout, (waitQueue == this->cmdQImmediateCopyOffload));
} else {
} else if (!inOrderWaitAllowed) {
const auto indefinitelyPoll = timeout == std::numeric_limits<uint64_t>::max();
auto waitStatus = NEO::WaitStatus::notReady;

View File

@@ -3260,6 +3260,10 @@ HWTEST_F(InOrderCmdListTests, givenHostVisibleEventOnLatestFlushWhenCallingSynch
EXPECT_EQ(0u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
}
auto currSyncInOrderCalls = immCmdList->synchronizeInOrderExecutionCalled;
immCmdList->hostSynchronize(0, false);
EXPECT_EQ(currSyncInOrderCalls, immCmdList->synchronizeInOrderExecutionCalled);
events[0]->signalScope = ZE_EVENT_SCOPE_FLAG_HOST;
immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams);
EXPECT_TRUE(immCmdList->latestFlushIsHostVisible);
@@ -3268,10 +3272,10 @@ HWTEST_F(InOrderCmdListTests, givenHostVisibleEventOnLatestFlushWhenCallingSynch
if (!immCmdList->isHeaplessModeEnabled() && immCmdList->latestOperationHasOptimizedCbEvent) {
EXPECT_EQ(0u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(2u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
EXPECT_EQ(3u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
} else if (immCmdList->dcFlushSupport) {
EXPECT_EQ(1u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(1u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
EXPECT_EQ(2u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
} else {
EXPECT_EQ(2u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(0u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
@@ -3282,10 +3286,10 @@ HWTEST_F(InOrderCmdListTests, givenHostVisibleEventOnLatestFlushWhenCallingSynch
if (!immCmdList->isHeaplessModeEnabled() && immCmdList->latestOperationHasOptimizedCbEvent) {
EXPECT_EQ(0u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(3u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
EXPECT_EQ(4u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
} else if (immCmdList->dcFlushSupport) {
EXPECT_EQ(1u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(2u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
EXPECT_EQ(3u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);
} else {
EXPECT_EQ(2u, immCmdList->synchronizeInOrderExecutionCalled);
EXPECT_EQ(1u, ultCsr->waitForCompletionWithTimeoutTaskCountCalled);