fix: Update topology mapping

Updates topology mapping to handle
case when no dual subslices

Resolves: NEO-10670

Signed-off-by: Jemale Lockett <jemale.lockett@intel.com>
This commit is contained in:
Jemale Lockett
2024-03-27 20:53:04 +00:00
committed by Compute-Runtime-Automation
parent b95dd1d405
commit 6d945ad28b
2 changed files with 94 additions and 2 deletions

View File

@@ -201,7 +201,7 @@ bool Wddm::translateTopologyInfo(TopologyMapping &mapping) {
std::vector<int> subSliceIndices;
subSliceIndices.reserve((gtSystemInfo.SliceInfo[x].DualSubSliceEnabledCount) * GT_MAX_SUBSLICE_PER_DSS);
// subSliceIndex is used to track the index number of subslices from all DSS in this slice
// subSliceIndex is used to track the index number of subslices from all SS or DSS in this slice
int subSliceIndex = -1;
for (uint32_t dss = 0; dss < GT_MAX_DUALSUBSLICE_PER_SLICE; dss++) {
if (!gtSystemInfo.SliceInfo[x].DSSInfo[dss].Enabled) {
@@ -221,6 +221,20 @@ bool Wddm::translateTopologyInfo(TopologyMapping &mapping) {
}
}
if (subSliceCount == 0) {
for (uint32_t sss = 0; sss < GT_MAX_SUBSLICE_PER_SLICE; sss++) {
subSliceIndex++;
if (!gtSystemInfo.SliceInfo[x].SubSliceInfo[sss].Enabled) {
continue;
}
subSliceCount++;
subSliceIndices.push_back(subSliceIndex);
euCount += gtSystemInfo.SliceInfo[x].SubSliceInfo[sss].EuEnabledCount;
}
}
// single slice available
if (sliceCount == 1) {
mapping.subsliceIndices = std::move(subSliceIndices);