mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
feature: add debug flag to control graph patch preamble
Related-To: NEO-16434 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
8d8404f59b
commit
f2c38ee012
@@ -1026,7 +1026,8 @@ TEST_F(GraphTestInstantiationTest, WhenInstantiatingGraphThenBakeCommandsIntoCom
|
|||||||
EXPECT_EQ(ZE_RESULT_SUCCESS, zeCommandListEndGraphCaptureExp(immCmdListHandle, &srcGraphHandle, nullptr));
|
EXPECT_EQ(ZE_RESULT_SUCCESS, zeCommandListEndGraphCaptureExp(immCmdListHandle, &srcGraphHandle, nullptr));
|
||||||
|
|
||||||
ctx.cmdListsToReturn.push_back(new Mock<CommandList>());
|
ctx.cmdListsToReturn.push_back(new Mock<CommandList>());
|
||||||
ExecutableGraph execGraph;
|
MockExecutableGraph execGraph;
|
||||||
|
EXPECT_TRUE(execGraph.usePatchingPreamble);
|
||||||
|
|
||||||
auto *graphHwCommands = ctx.cmdListsToReturn[0];
|
auto *graphHwCommands = ctx.cmdListsToReturn[0];
|
||||||
EXPECT_EQ(0U, graphHwCommands->appendBarrierCalled);
|
EXPECT_EQ(0U, graphHwCommands->appendBarrierCalled);
|
||||||
@@ -1082,6 +1083,16 @@ TEST_F(GraphTestInstantiationTest, WhenInstantiatingGraphThenBakeCommandsIntoCom
|
|||||||
EXPECT_EQ(2U, graphHwCommands->appendLaunchKernelWithParametersCalled); // +1 for zeCommandListAppendLaunchKernelWithArguments
|
EXPECT_EQ(2U, graphHwCommands->appendLaunchKernelWithParametersCalled); // +1 for zeCommandListAppendLaunchKernelWithArguments
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(GraphTestInstantiationTest, GivenGraphPatchPreambleDebugFlagWhenInstantiatingGraphThenUseDebugSettingForPatchPreamble) {
|
||||||
|
GraphsCleanupGuard graphCleanup;
|
||||||
|
|
||||||
|
DebugManagerStateRestore restorer;
|
||||||
|
debugManager.flags.ForceDisableGraphPatchPreamble.set(1);
|
||||||
|
|
||||||
|
MockExecutableGraph execGraph;
|
||||||
|
EXPECT_FALSE(execGraph.usePatchingPreamble);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(GraphTestInstantiationTest, givenInOrderCmdListAndRegularCbEventWhenInstantiateToGraphThenDoNotRecordExternalCbEvent) {
|
TEST_F(GraphTestInstantiationTest, givenInOrderCmdListAndRegularCbEventWhenInstantiateToGraphThenDoNotRecordExternalCbEvent) {
|
||||||
GraphsCleanupGuard graphCleanup;
|
GraphsCleanupGuard graphCleanup;
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ struct MockExecutableGraph : ExecutableGraph {
|
|||||||
using ExecutableGraph::multiEngineGraph;
|
using ExecutableGraph::multiEngineGraph;
|
||||||
using ExecutableGraph::myCommandLists;
|
using ExecutableGraph::myCommandLists;
|
||||||
using ExecutableGraph::submissionChain;
|
using ExecutableGraph::submissionChain;
|
||||||
|
using ExecutableGraph::usePatchingPreamble;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ult
|
} // namespace ult
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "level_zero/experimental/source/graph/graph.h"
|
#include "level_zero/experimental/source/graph/graph.h"
|
||||||
|
|
||||||
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||||
#include "shared/source/helpers/gfx_core_helper.h"
|
#include "shared/source/helpers/gfx_core_helper.h"
|
||||||
|
|
||||||
#include "level_zero/core/source/cmdlist/cmdlist.h"
|
#include "level_zero/core/source/cmdlist/cmdlist.h"
|
||||||
@@ -375,6 +376,13 @@ ze_result_t Closure<CaptureApi::zeCommandListAppendLaunchKernelWithArguments>::i
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExecutableGraph::ExecutableGraph() {
|
||||||
|
int32_t overrideDisablePatchingPreamble = NEO::debugManager.flags.ForceDisableGraphPatchPreamble.get();
|
||||||
|
if (overrideDisablePatchingPreamble != -1) {
|
||||||
|
this->usePatchingPreamble = (overrideDisablePatchingPreamble == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ExecutableGraph::~ExecutableGraph() = default;
|
ExecutableGraph::~ExecutableGraph() = default;
|
||||||
|
|
||||||
L0::CommandList *ExecutableGraph::allocateAndAddCommandListSubmissionNode() {
|
L0::CommandList *ExecutableGraph::allocateAndAddCommandListSubmissionNode() {
|
||||||
@@ -494,7 +502,7 @@ ze_result_t ExecutableGraph::execute(L0::CommandList *executionTarget, void *pNe
|
|||||||
auto currSignalEvent = (myLastCommandList == *cmdList) ? hSignalEvent : nullptr;
|
auto currSignalEvent = (myLastCommandList == *cmdList) ? hSignalEvent : nullptr;
|
||||||
|
|
||||||
ze_command_list_handle_t hCmdList = *cmdList;
|
ze_command_list_handle_t hCmdList = *cmdList;
|
||||||
executionTarget->setPatchingPreamble(true, this->multiEngineGraph);
|
executionTarget->setPatchingPreamble(this->usePatchingPreamble, this->multiEngineGraph);
|
||||||
auto res = executionTarget->appendCommandLists(1, &hCmdList, currSignalEvent, numWaitEvents, phWaitEvents);
|
auto res = executionTarget->appendCommandLists(1, &hCmdList, currSignalEvent, numWaitEvents, phWaitEvents);
|
||||||
executionTarget->setPatchingPreamble(false, false);
|
executionTarget->setPatchingPreamble(false, false);
|
||||||
if (ZE_RESULT_SUCCESS != res) {
|
if (ZE_RESULT_SUCCESS != res) {
|
||||||
@@ -506,7 +514,7 @@ ze_result_t ExecutableGraph::execute(L0::CommandList *executionTarget, void *pNe
|
|||||||
if (L0::CommandList **cmdList = std::get_if<L0::CommandList *>(&this->submissionChain[submissioNodeId])) {
|
if (L0::CommandList **cmdList = std::get_if<L0::CommandList *>(&this->submissionChain[submissioNodeId])) {
|
||||||
auto currSignalEvent = (myLastCommandList == *cmdList) ? hSignalEvent : nullptr;
|
auto currSignalEvent = (myLastCommandList == *cmdList) ? hSignalEvent : nullptr;
|
||||||
ze_command_list_handle_t hCmdList = *cmdList;
|
ze_command_list_handle_t hCmdList = *cmdList;
|
||||||
executionTarget->setPatchingPreamble(true, this->multiEngineGraph);
|
executionTarget->setPatchingPreamble(this->usePatchingPreamble, this->multiEngineGraph);
|
||||||
auto res = executionTarget->appendCommandLists(1, &hCmdList, currSignalEvent, 0, nullptr);
|
auto res = executionTarget->appendCommandLists(1, &hCmdList, currSignalEvent, 0, nullptr);
|
||||||
executionTarget->setPatchingPreamble(false, false);
|
executionTarget->setPatchingPreamble(false, false);
|
||||||
if (ZE_RESULT_SUCCESS != res) {
|
if (ZE_RESULT_SUCCESS != res) {
|
||||||
|
|||||||
@@ -251,8 +251,7 @@ struct GraphInstatiateSettings {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ExecutableGraph : _ze_executable_graph_handle_t {
|
struct ExecutableGraph : _ze_executable_graph_handle_t {
|
||||||
ExecutableGraph() {
|
ExecutableGraph();
|
||||||
}
|
|
||||||
|
|
||||||
ze_result_t instantiateFrom(Graph &graph, const GraphInstatiateSettings &settings);
|
ze_result_t instantiateFrom(Graph &graph, const GraphInstatiateSettings &settings);
|
||||||
ze_result_t instantiateFrom(Graph &graph) {
|
ze_result_t instantiateFrom(Graph &graph) {
|
||||||
@@ -297,6 +296,7 @@ struct ExecutableGraph : _ze_executable_graph_handle_t {
|
|||||||
GraphSubmissionChain submissionChain;
|
GraphSubmissionChain submissionChain;
|
||||||
|
|
||||||
bool multiEngineGraph = false;
|
bool multiEngineGraph = false;
|
||||||
|
bool usePatchingPreamble = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr size_t maxVariantSize = 2 * 64;
|
constexpr size_t maxVariantSize = 2 * 64;
|
||||||
|
|||||||
@@ -320,6 +320,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, OverrideCopyOffloadMode, -1, "-1: default, 0: di
|
|||||||
DECLARE_DEBUG_VARIABLE(int32_t, UseSingleListForTemporaryAllocations, -1, "-1: default, 0: disabled, 0: enabled. If enabled, use single list, instead of per CSR for tracking temporary allocations")
|
DECLARE_DEBUG_VARIABLE(int32_t, UseSingleListForTemporaryAllocations, -1, "-1: default, 0: disabled, 0: enabled. If enabled, use single list, instead of per CSR for tracking temporary allocations")
|
||||||
DECLARE_DEBUG_VARIABLE(int32_t, OverrideMaxMemAllocSizeMb, -1, "-1: default, >=0 override reported max mem alloc size in MB")
|
DECLARE_DEBUG_VARIABLE(int32_t, OverrideMaxMemAllocSizeMb, -1, "-1: default, >=0 override reported max mem alloc size in MB")
|
||||||
DECLARE_DEBUG_VARIABLE(int32_t, DetectIncorrectPointersOnSetArgCalls, -1, "-1: default do not detect, 0: do not detect, 1: detect incorrect pointers and return error")
|
DECLARE_DEBUG_VARIABLE(int32_t, DetectIncorrectPointersOnSetArgCalls, -1, "-1: default do not detect, 0: do not detect, 1: detect incorrect pointers and return error")
|
||||||
|
DECLARE_DEBUG_VARIABLE(int32_t, ForceDisableGraphPatchPreamble, -1, "-1: default, 0: enable patch preamble, 1: disable graph patch preamble. If disabled, do not patch preamble graph internal command lists")
|
||||||
|
|
||||||
/*LOGGING FLAGS*/
|
/*LOGGING FLAGS*/
|
||||||
DECLARE_DEBUG_VARIABLE(int32_t, PrintDriverDiagnostics, -1, "prints driver diagnostics messages to standard output, value corresponds to hint level")
|
DECLARE_DEBUG_VARIABLE(int32_t, PrintDriverDiagnostics, -1, "prints driver diagnostics messages to standard output, value corresponds to hint level")
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ ReturnRawGpuTimestamps = 0
|
|||||||
EnableDeviceBasedTimestamps = 1
|
EnableDeviceBasedTimestamps = 1
|
||||||
MaxHwThreadsPercent = 0
|
MaxHwThreadsPercent = 0
|
||||||
MinHwThreadsUnoccupied = 0
|
MinHwThreadsUnoccupied = 0
|
||||||
|
ForceDisableGraphPatchPreamble = -1
|
||||||
LimitBlitterMaxWidth = -1
|
LimitBlitterMaxWidth = -1
|
||||||
LimitBlitterMaxHeight = -1
|
LimitBlitterMaxHeight = -1
|
||||||
LimitBlitterMaxSetWidth = -1
|
LimitBlitterMaxSetWidth = -1
|
||||||
|
|||||||
Reference in New Issue
Block a user