mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 13:33:02 +08:00
fix: Correct maxEuPerSubSlice calculation in drm
Related-To: NEO-7996 Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
d1ba1fca06
commit
79e30f9ecd
@@ -92,7 +92,7 @@ struct DrmQueryTopologyData {
|
||||
|
||||
int maxSliceCount = 0;
|
||||
int maxSubSliceCount = 0;
|
||||
int maxEuCount = 0;
|
||||
int maxEuPerSubSlice = 0;
|
||||
};
|
||||
|
||||
struct MemoryClassInstance {
|
||||
|
||||
@@ -412,7 +412,7 @@ bool IoctlHelper::getTopologyDataAndMap(const HardwareInfo &hwInfo, DrmQueryTopo
|
||||
|
||||
TopologyMapping mapping;
|
||||
auto retVal = this->translateTopologyInfo(topologyInfo, topologyData, mapping);
|
||||
topologyData.maxEuCount = topologyInfo->maxEusPerSubslice;
|
||||
topologyData.maxEuPerSubSlice = topologyInfo->maxEusPerSubslice;
|
||||
|
||||
topologyMap.clear();
|
||||
topologyMap[0] = mapping;
|
||||
|
||||
@@ -116,7 +116,7 @@ bool IoctlHelperPrelim20::getTopologyDataAndMap(const HardwareInfo &hwInfo, DrmQ
|
||||
|
||||
topologyData.maxSliceCount = std::max(topologyData.maxSliceCount, tileTopologyData.maxSliceCount);
|
||||
topologyData.maxSubSliceCount = std::max(topologyData.maxSubSliceCount, tileTopologyData.maxSubSliceCount);
|
||||
topologyData.maxEuCount = std::max(topologyData.maxEuCount, static_cast<int>(data->maxEusPerSubslice));
|
||||
topologyData.maxEuPerSubSlice = std::max(topologyData.maxEuPerSubSlice, static_cast<int>(data->maxEusPerSubslice));
|
||||
|
||||
topologyMap[i] = mapping;
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ int ProductHelper::configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
topologyData.maxEuCount = topologyData.subSliceCount > 0 ? topologyData.euCount / topologyData.subSliceCount : 0;
|
||||
topologyData.maxEuPerSubSlice = topologyData.subSliceCount > 0 ? topologyData.euCount / topologyData.subSliceCount : 0;
|
||||
topologyData.maxSliceCount = topologyData.sliceCount;
|
||||
topologyData.maxSubSliceCount = topologyData.sliceCount > 0 ? topologyData.subSliceCount / topologyData.sliceCount : 0;
|
||||
}
|
||||
@@ -109,7 +109,7 @@ int ProductHelper::configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo
|
||||
gtSystemInfo->EUCount = static_cast<uint32_t>(topologyData.euCount);
|
||||
gtSystemInfo->ThreadCount = compilerProductHelper.getNumThreadsPerEu() * gtSystemInfo->EUCount;
|
||||
|
||||
gtSystemInfo->MaxEuPerSubSlice = gtSystemInfo->MaxEuPerSubSlice != 0 ? gtSystemInfo->MaxEuPerSubSlice : topologyData.maxEuCount;
|
||||
gtSystemInfo->MaxEuPerSubSlice = gtSystemInfo->MaxEuPerSubSlice != 0 ? gtSystemInfo->MaxEuPerSubSlice : topologyData.maxEuPerSubSlice;
|
||||
gtSystemInfo->MaxSubSlicesSupported = std::max(static_cast<uint32_t>(topologyData.maxSubSliceCount * topologyData.maxSliceCount), gtSystemInfo->MaxSubSlicesSupported);
|
||||
gtSystemInfo->MaxSlicesSupported = topologyData.maxSliceCount;
|
||||
gtSystemInfo->MaxDualSubSlicesSupported = gtSystemInfo->MaxSubSlicesSupported;
|
||||
|
||||
@@ -351,7 +351,7 @@ void IoctlHelperXe::getTopologyData(uint32_t nTiles, std::vector<std::bitset<8>>
|
||||
|
||||
// pick max config
|
||||
topologyData.maxSubSliceCount = std::max(topologyData.maxSubSliceCount, subSliceCountPerTile);
|
||||
topologyData.maxEuCount = std::max(topologyData.maxEuCount, euPerDssPerTile * subSliceCountPerTile);
|
||||
topologyData.maxEuPerSubSlice = std::max(topologyData.maxEuPerSubSlice, euPerDssPerTile);
|
||||
}
|
||||
|
||||
topologyData.sliceCount = 1;
|
||||
|
||||
Reference in New Issue
Block a user