mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
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:

committed by
Compute-Runtime-Automation

parent
13bc2300e1
commit
cf1bc3a2ba
@ -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);
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user