mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 22:12:59 +08:00
Enable RelaxedOrdering mode only if there are more than 2 clients
Related-To: NEO-7458 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
34b8f08fc6
commit
1b488224fb
@@ -286,7 +286,12 @@ bool CommandListCoreFamilyImmediate<gfxCoreFamily>::waitForEventsFromHost() {
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
bool CommandListCoreFamilyImmediate<gfxCoreFamily>::isRelaxedOrderingDispatchAllowed(uint32_t numWaitEvents) const {
|
||||
return (this->csr->directSubmissionRelaxedOrderingEnabled() && numWaitEvents > 0);
|
||||
uint32_t minimalNumberOfClients = 2;
|
||||
if (NEO::DebugManager.flags.DirectSubmissionRelaxedOrderingMinNumberOfClients.get() != -1) {
|
||||
minimalNumberOfClients = static_cast<uint32_t>(NEO::DebugManager.flags.DirectSubmissionRelaxedOrderingMinNumberOfClients.get());
|
||||
}
|
||||
|
||||
return (this->csr->directSubmissionRelaxedOrderingEnabled() && numWaitEvents > 0 && this->csr->getNumClients() >= minimalNumberOfClients);
|
||||
}
|
||||
|
||||
template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
|
||||
@@ -141,6 +141,7 @@ struct WhiteBox<L0::CommandListCoreFamilyImmediate<gfxCoreFamily>>
|
||||
using BaseClass::getHostPtrAlloc;
|
||||
using BaseClass::immediateCmdListHeapSharing;
|
||||
using BaseClass::isFlushTaskSubmissionEnabled;
|
||||
using BaseClass::isRelaxedOrderingDispatchAllowed;
|
||||
using BaseClass::partitionCount;
|
||||
using BaseClass::pipeControlMultiKernelEventSync;
|
||||
using BaseClass::pipelineSelectStateTracking;
|
||||
|
||||
@@ -1112,6 +1112,7 @@ HWTEST2_F(CommandListCreate, givenDirectSubmissionAndImmCmdListWhenDispatchingTh
|
||||
|
||||
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(*ultCsr);
|
||||
ultCsr->directSubmission.reset(directSubmission);
|
||||
ultCsr->registerClient();
|
||||
|
||||
auto verifyFlags = [&ultCsr](ze_result_t result, bool dispatchFlag, bool bbFlag) {
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "shared/source/helpers/aligned_memory.h"
|
||||
#include "shared/source/memory_manager/internal_allocation_storage.h"
|
||||
#include "shared/test/common/cmd_parse/gen_cmd_parse.h"
|
||||
#include "shared/test/common/libult/ult_command_stream_receiver.h"
|
||||
#include "shared/test/common/mocks/mock_direct_submission_hw.h"
|
||||
#include "shared/test/common/mocks/mock_graphics_allocation.h"
|
||||
#include "shared/test/common/mocks/mock_memory_manager.h"
|
||||
#include "shared/test/common/test_macros/hw_test.h"
|
||||
@@ -1320,6 +1322,42 @@ HWTEST2_F(CommandListCreate, whenGettingCommandsToPatchThenCorrectValuesAreRetur
|
||||
EXPECT_EQ(&commandList->commandsToPatch, &commandList->getCommandsToPatch());
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenNumClientsWhenAskingIfRelaxedOrderingEnabledThenReturnCorrectValue, IsAtLeastXeHpcCore) {
|
||||
DebugManagerStateRestore restore;
|
||||
DebugManager.flags.DirectSubmissionRelaxedOrdering.set(1);
|
||||
|
||||
auto commandList = std::make_unique<WhiteBox<L0::CommandListCoreFamilyImmediate<gfxCoreFamily>>>();
|
||||
commandList->csr = device->getNEODevice()->getDefaultEngine().commandStreamReceiver;
|
||||
|
||||
auto ultCsr = static_cast<NEO::UltCommandStreamReceiver<FamilyType> *>(commandList->csr);
|
||||
ultCsr->registerClient();
|
||||
ultCsr->recordFlusheBatchBuffer = true;
|
||||
|
||||
auto directSubmission = new NEO::MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(*ultCsr);
|
||||
ultCsr->directSubmission.reset(directSubmission);
|
||||
|
||||
EXPECT_EQ(1u, ultCsr->getNumClients());
|
||||
EXPECT_FALSE(commandList->isRelaxedOrderingDispatchAllowed(1));
|
||||
|
||||
ultCsr->registerClient();
|
||||
|
||||
EXPECT_EQ(2u, ultCsr->getNumClients());
|
||||
EXPECT_TRUE(commandList->isRelaxedOrderingDispatchAllowed(1));
|
||||
|
||||
DebugManager.flags.DirectSubmissionRelaxedOrderingMinNumberOfClients.set(4);
|
||||
|
||||
EXPECT_EQ(2u, ultCsr->getNumClients());
|
||||
EXPECT_FALSE(commandList->isRelaxedOrderingDispatchAllowed(1));
|
||||
|
||||
ultCsr->registerClient();
|
||||
EXPECT_EQ(3u, ultCsr->getNumClients());
|
||||
EXPECT_FALSE(commandList->isRelaxedOrderingDispatchAllowed(1));
|
||||
|
||||
ultCsr->registerClient();
|
||||
EXPECT_EQ(4u, ultCsr->getNumClients());
|
||||
EXPECT_TRUE(commandList->isRelaxedOrderingDispatchAllowed(1));
|
||||
}
|
||||
|
||||
HWTEST2_F(CommandListCreate, givenNonEmptyCommandsToPatchWhenClearCommandsToPatchIsCalledThenCommandsAreCorrectlyCleared, IsAtLeastSkl) {
|
||||
using VFE_STATE_TYPE = typename FamilyType::VFE_STATE_TYPE;
|
||||
|
||||
|
||||
@@ -476,6 +476,7 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC
|
||||
context->allocHostMem(&hostDesc, size, alignment, &dstPtr);
|
||||
auto ultCsr = static_cast<NEO::UltCommandStreamReceiver<FamilyType> *>(commandList0->csr);
|
||||
ultCsr->recordFlusheBatchBuffer = true;
|
||||
ultCsr->registerClient();
|
||||
|
||||
auto result = commandList0->appendMemoryCopy(dstPtr, srcPtr, size, nullptr, 0, nullptr, false);
|
||||
ASSERT_EQ(ZE_RESULT_SUCCESS, result);
|
||||
@@ -534,6 +535,7 @@ HWTEST2_F(CommandQueueCommandsXeHpc, givenFlushTaskSubmissionEnabledAndSplitBcsC
|
||||
context->allocHostMem(&hostDesc, size, alignment, &dstPtr);
|
||||
auto ultCsr = static_cast<NEO::UltCommandStreamReceiver<FamilyType> *>(commandList0->csr);
|
||||
ultCsr->recordFlusheBatchBuffer = true;
|
||||
ultCsr->registerClient();
|
||||
|
||||
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(*ultCsr);
|
||||
ultCsr->directSubmission.reset(directSubmission);
|
||||
|
||||
Reference in New Issue
Block a user