performance: Signal inOrder counter with pipe control, part 2

When on DC flush platform signal inOrder counter directly with pipe
control. Obtain profiling from CW. Only for immediate in order cmd
lists.

Related-To: NEO-13441

Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2024-12-20 11:54:27 +00:00
committed by Compute-Runtime-Automation
parent 98aedc5b35
commit 363f2becd4

View File

@ -284,7 +284,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
std::list<void *> additionalCommands;
if (compactEvent) {
if (compactEvent && (!compactEvent->isCounterBased() || !this->isImmediateType())) {
appendEventForProfilingAllWalkers(compactEvent, nullptr, launchParams.outListCommands, true, true, launchParams.omitAddingEventResidency, false);
}
@ -299,12 +299,20 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
inOrderNonWalkerSignalling = isInOrderNonWalkerSignalingRequired(eventForInOrderExec);
if (inOrderExecSignalRequired) {
if (!compactEvent || !this->isImmediateType() || (!compactEvent->isCounterBased() || compactEvent->isUsingContextEndOffset())) {
if (!compactEvent || !this->isImmediateType() || !compactEvent->isCounterBased() || compactEvent->isUsingContextEndOffset()) {
if (inOrderNonWalkerSignalling) {
if (!eventForInOrderExec->getAllocation(this->device) && Event::standaloneInOrderTimestampAllocationEnabled()) {
eventForInOrderExec->resetInOrderTimestampNode(device->getInOrderTimestampAllocator()->getTag());
}
dispatchEventPostSyncOperation(eventForInOrderExec, nullptr, launchParams.outListCommands, Event::STATE_CLEARED, false, false, false, false, false);
if (!compactEvent || !this->isImmediateType() || !compactEvent->isCounterBased()) {
dispatchEventPostSyncOperation(eventForInOrderExec, nullptr, launchParams.outListCommands, Event::STATE_CLEARED, false, false, false, false, false);
} else {
eventAddress = eventForInOrderExec->getPacketAddress(this->device);
isTimestampEvent = true;
if (!launchParams.omitAddingEventResidency) {
commandContainer.addToResidencyContainer(eventForInOrderExec->getAllocation(this->device));
}
}
} else {
inOrderCounterValue = this->inOrderExecInfo->getCounterValue() + getInOrderIncrementValue();
inOrderExecInfo = this->inOrderExecInfo.get();
@ -384,7 +392,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
}
if (!launchParams.makeKernelCommandView) {
if ((compactEvent && (!compactEvent->isCounterBased() || compactEvent->isUsingContextEndOffset() || !this->isImmediateType()))) {
if ((compactEvent && (!compactEvent->isCounterBased() || !this->isImmediateType()))) {
void **syncCmdBuffer = nullptr;
if (launchParams.outSyncCommand != nullptr) {
launchParams.outSyncCommand->type = CommandToPatch::SignalEventPostSyncPipeControl;
@ -408,7 +416,7 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
if (inOrderExecSignalRequired) {
if (inOrderNonWalkerSignalling) {
if (!launchParams.skipInOrderNonWalkerSignaling) {
if ((compactEvent && (compactEvent->isCounterBased() && !compactEvent->isUsingContextEndOffset() && this->isImmediateType()))) {
if ((compactEvent && (compactEvent->isCounterBased() && this->isImmediateType()))) {
appendSignalInOrderDependencyCounter(eventForInOrderExec, false, true);
} else {
appendWaitOnSingleEvent(eventForInOrderExec, launchParams.outListCommands, false, false, CommandToPatch::CbEventTimestampPostSyncSemaphoreWait);