Disable EU fusion based on kernel properties from compiler

Related-To: NEO-6633

Signed-off-by: Konstanty Misiak <konstanty.misiak@intel.com>
This commit is contained in:
Konstanty Misiak
2022-02-10 23:33:40 +00:00
committed by Compute-Runtime-Automation
parent 13bc2300e1
commit cf1bc3a2ba
37 changed files with 228 additions and 95 deletions

View File

@ -942,7 +942,7 @@ inline void CommandStreamReceiverHw<GfxFamily>::programVFEState(LinearStream &cs
auto disableOverdispatch = hwInfoConfig.isDisableOverdispatchAvailable(hwInfo) &&
(dispatchFlags.additionalKernelExecInfo != AdditionalKernelExecInfo::NotSet);
streamProperties.frontEndState.setProperties(lastKernelExecutionType == KernelExecutionType::Concurrent,
disableOverdispatch, osContext->isEngineInstanced(), hwInfo);
dispatchFlags.disableEUFusion, disableOverdispatch, osContext->isEngineInstanced(), hwInfo);
PreambleHelper<GfxFamily>::programVfeState(
pVfeState, hwInfo, requiredScratchSize, getScratchPatchAddress(),
maxFrontEndThreads, streamProperties);

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2021 Intel Corporation
* Copyright (C) 2018-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -115,6 +115,7 @@ struct DispatchFlags {
bool areMultipleSubDevicesInContext = false;
bool memoryMigrationRequired = false;
bool textureCacheFlush = false;
bool disableEUFusion = false;
};
struct CsrSizeRequestFlags {

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Intel Corporation
* Copyright (C) 2021-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -23,11 +23,12 @@ struct StateComputeModeProperties {
};
struct FrontEndProperties {
StreamProperty computeDispatchAllWalkerEnable{};
StreamProperty disableEUFusion{};
StreamProperty disableOverdispatch{};
StreamProperty singleSliceDispatchCcsMode{};
StreamProperty computeDispatchAllWalkerEnable{};
void setProperties(bool isCooperativeKernel, bool disableOverdispatch, int32_t engineInstancedDevice, const HardwareInfo &hwInfo);
void setProperties(bool isCooperativeKernel, bool disableEUFusion, bool disableOverdispatch, int32_t engineInstancedDevice, const HardwareInfo &hwInfo);
void setProperties(const FrontEndProperties &properties);
bool isDirty() const;
void clearIsDirty();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Intel Corporation
* Copyright (C) 2021-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -61,11 +61,12 @@ void StateComputeModeProperties::clearIsDirty() {
threadArbitrationPolicy.isDirty = false;
}
void FrontEndProperties::setProperties(bool isCooperativeKernel, bool disableOverdispatch, int32_t engineInstancedDevice,
void FrontEndProperties::setProperties(bool isCooperativeKernel, bool disableEUFusion, bool disableOverdispatch, int32_t engineInstancedDevice,
const HardwareInfo &hwInfo) {
clearIsDirty();
this->computeDispatchAllWalkerEnable.set(isCooperativeKernel);
this->disableEUFusion.set(disableEUFusion);
this->disableOverdispatch.set(disableOverdispatch);
this->singleSliceDispatchCcsMode.set(engineInstancedDevice);
}
@ -74,15 +75,17 @@ void FrontEndProperties::setProperties(const FrontEndProperties &properties) {
clearIsDirty();
disableOverdispatch.set(properties.disableOverdispatch.value);
disableEUFusion.set(properties.disableEUFusion.value);
singleSliceDispatchCcsMode.set(properties.singleSliceDispatchCcsMode.value);
computeDispatchAllWalkerEnable.set(properties.computeDispatchAllWalkerEnable.value);
}
bool FrontEndProperties::isDirty() const {
return disableOverdispatch.isDirty || singleSliceDispatchCcsMode.isDirty || computeDispatchAllWalkerEnable.isDirty;
return disableOverdispatch.isDirty || disableEUFusion.isDirty || singleSliceDispatchCcsMode.isDirty || computeDispatchAllWalkerEnable.isDirty;
}
void FrontEndProperties::clearIsDirty() {
disableEUFusion.isDirty = false;
disableOverdispatch.isDirty = false;
singleSliceDispatchCcsMode.isDirty = false;
computeDispatchAllWalkerEnable.isDirty = false;