fix: skip walker in-order signaling when closing PC is required

Related-To: NEO-7966

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2023-12-15 13:08:58 +00:00
committed by Compute-Runtime-Automation
parent b1c01fc933
commit 607832a8e6
5 changed files with 128 additions and 9 deletions

View File

@@ -48,6 +48,7 @@ struct CmdListKernelLaunchParams {
bool isDestinationAllocationInSystemMemory = false;
bool isHostSignalScopeEvent = false;
bool skipInOrderNonWalkerSignaling = false;
bool pipeControlSignalling = false;
};
struct CmdListReturnPoint {

View File

@@ -1456,6 +1456,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopy(void *dstptr,
launchParams.isKernelSplitOperation = kernelCounter > 1;
bool singlePipeControlPacket = eventSignalPipeControl(launchParams.isKernelSplitOperation, dcFlush);
launchParams.pipeControlSignalling = (signalEvent && singlePipeControlPacket) || dstAllocationStruct.needsFlush;
appendEventForProfilingAllWalkers(signalEvent, true, singlePipeControlPacket);
if (isCopyOnly()) {
@@ -1525,7 +1527,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendMemoryCopy(void *dstptr,
addToMappedEventList(signalEvent);
if (this->isInOrderExecutionEnabled()) {
bool emitPipeControl = !isCopyOnly() && eventSignalPipeControl(launchParams.isKernelSplitOperation, signalEvent ? getDcFlushRequired(signalEvent->isSignalScope()) : false);
bool emitPipeControl = !isCopyOnly() && launchParams.pipeControlSignalling;
if (launchParams.isKernelSplitOperation || inOrderCopyOnlySignalingAllowed || emitPipeControl) {
if (!signalEvent && !isCopyOnly()) {

View File

@@ -277,7 +277,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
appendEventForProfilingAllWalkers(compactEvent, true, true);
}
bool inOrderExecSignalRequired = (this->isInOrderExecutionEnabled() && !launchParams.isKernelSplitOperation);
bool inOrderExecSignalRequired = (this->isInOrderExecutionEnabled() && !launchParams.isKernelSplitOperation && !launchParams.pipeControlSignalling);
bool inOrderNonWalkerSignalling = isInOrderNonWalkerSignalingRequired(eventForInOrderExec);
uint64_t inOrderCounterValue = 0;