mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 05:24:02 +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
@@ -30,7 +30,7 @@ struct KernelArgumentType {
|
||||
uint64_t argTypeQualifierValue;
|
||||
};
|
||||
|
||||
WorkSizeInfo::WorkSizeInfo(uint32_t maxWorkGroupSize, bool hasBarriers, uint32_t simdSize, uint32_t slmTotalSize, const HardwareInfo *hwInfo, uint32_t numThreadsPerSubSlice, uint32_t localMemSize, bool imgUsed, bool yTiledSurface) {
|
||||
WorkSizeInfo::WorkSizeInfo(uint32_t maxWorkGroupSize, bool hasBarriers, uint32_t simdSize, uint32_t slmTotalSize, const HardwareInfo *hwInfo, uint32_t numThreadsPerSubSlice, uint32_t localMemSize, bool imgUsed, bool yTiledSurface, bool disableEUFusion) {
|
||||
this->maxWorkGroupSize = maxWorkGroupSize;
|
||||
this->hasBarriers = hasBarriers;
|
||||
this->simdSize = simdSize;
|
||||
@@ -41,7 +41,7 @@ WorkSizeInfo::WorkSizeInfo(uint32_t maxWorkGroupSize, bool hasBarriers, uint32_t
|
||||
this->imgUsed = imgUsed;
|
||||
this->yTiledSurfaces = yTiledSurface;
|
||||
|
||||
setMinWorkGroupSize(hwInfo);
|
||||
setMinWorkGroupSize(hwInfo, disableEUFusion);
|
||||
}
|
||||
|
||||
void WorkSizeInfo::setIfUseImg(const KernelInfo &kernelInfo) {
|
||||
@@ -53,7 +53,7 @@ void WorkSizeInfo::setIfUseImg(const KernelInfo &kernelInfo) {
|
||||
}
|
||||
}
|
||||
}
|
||||
void WorkSizeInfo::setMinWorkGroupSize(const HardwareInfo *hwInfo) {
|
||||
void WorkSizeInfo::setMinWorkGroupSize(const HardwareInfo *hwInfo, bool disableEUFusion) {
|
||||
minWorkGroupSize = 0;
|
||||
if (hasBarriers) {
|
||||
uint32_t maxBarriersPerHSlice = (coreFamily >= IGFX_GEN9_CORE) ? 32 : 16;
|
||||
@@ -65,7 +65,7 @@ void WorkSizeInfo::setMinWorkGroupSize(const HardwareInfo *hwInfo) {
|
||||
}
|
||||
|
||||
const auto &hwHelper = HwHelper::get(hwInfo->platform.eRenderCoreFamily);
|
||||
if (hwHelper.isFusedEuDispatchEnabled(*hwInfo)) {
|
||||
if (hwHelper.isFusedEuDispatchEnabled(*hwInfo) && !disableEUFusion) {
|
||||
minWorkGroupSize *= 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,10 +52,10 @@ struct WorkSizeInfo {
|
||||
bool useStrictRatio = false;
|
||||
float targetRatio = 0;
|
||||
|
||||
WorkSizeInfo(uint32_t maxWorkGroupSize, bool hasBarriers, uint32_t simdSize, uint32_t slmTotalSize, const HardwareInfo *hwInfo, uint32_t numThreadsPerSubSlice, uint32_t localMemSize, bool imgUsed, bool yTiledSurface);
|
||||
WorkSizeInfo(uint32_t maxWorkGroupSize, bool hasBarriers, uint32_t simdSize, uint32_t slmTotalSize, const HardwareInfo *hwInfo, uint32_t numThreadsPerSubSlice, uint32_t localMemSize, bool imgUsed, bool yTiledSurface, bool disableEUFusion);
|
||||
|
||||
void setIfUseImg(const KernelInfo &kernelInfo);
|
||||
void setMinWorkGroupSize(const HardwareInfo *hwInfo);
|
||||
void setMinWorkGroupSize(const HardwareInfo *hwInfo, bool disableEUFusion);
|
||||
void checkRatio(const size_t workItems[3]);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user