Skip to content

Commit 4d8d241

Browse files
Add subslice ID remapping for single slice configs
Related-To: NEO-6565 Signed-off-by: Mateusz Hoppe <[email protected]>
1 parent 176c528 commit 4d8d241

File tree

6 files changed

+399
-36
lines changed

6 files changed

+399
-36
lines changed

level_zero/core/source/device/device_imp.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ DebugSession *DeviceImp::createDebugSession(const zet_debug_config_t &config, ze
11021102
return debugSession.get();
11031103
}
11041104

1105-
bool DeviceImp::toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &deviceIndex) {
1105+
bool DeviceImp::toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t &deviceIndex) {
11061106
auto hwInfo = neoDevice->getRootDeviceEnvironment().getHardwareInfo();
11071107
uint32_t subDeviceCount = NEO::HwHelper::getSubDevicesCount(hwInfo);
11081108
auto deviceBitfield = neoDevice->getDeviceBitfield();
@@ -1112,6 +1112,11 @@ bool DeviceImp::toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t
11121112
for (uint32_t i = 0; i < topologyMap.size(); i++) {
11131113
if (sliceId < topologyMap.at(i).sliceIndices.size()) {
11141114
slice = topologyMap.at(i).sliceIndices[sliceId];
1115+
1116+
if (topologyMap.at(i).sliceIndices.size() == 1) {
1117+
uint32_t subsliceId = subslice;
1118+
subslice = topologyMap.at(i).subsliceIndices[subsliceId];
1119+
}
11151120
deviceIndex = i;
11161121
return true;
11171122
}
@@ -1125,6 +1130,11 @@ bool DeviceImp::toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t
11251130
if (slice < topologyMap.at(subDeviceIndex).sliceIndices.size()) {
11261131
deviceIndex = subDeviceIndex;
11271132
slice = topologyMap.at(subDeviceIndex).sliceIndices[slice];
1133+
1134+
if (topologyMap.at(subDeviceIndex).sliceIndices.size() == 1) {
1135+
uint32_t subsliceId = subslice;
1136+
subslice = topologyMap.at(subDeviceIndex).subsliceIndices[subsliceId];
1137+
}
11281138
return true;
11291139
}
11301140
}
@@ -1133,7 +1143,7 @@ bool DeviceImp::toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t
11331143
return false;
11341144
}
11351145

1136-
bool DeviceImp::toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t deviceIndex) {
1146+
bool DeviceImp::toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t deviceIndex) {
11371147
auto deviceBitfield = neoDevice->getDeviceBitfield();
11381148

11391149
if (isSubdevice) {
@@ -1153,6 +1163,13 @@ bool DeviceImp::toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slic
11531163
if (static_cast<uint32_t>(topologyMap.at(deviceIndex).sliceIndices[i]) == slice) {
11541164
apiSliceId += i;
11551165
slice = apiSliceId;
1166+
if (topologyMap.at(deviceIndex).sliceIndices.size() == 1) {
1167+
for (uint32_t subsliceApiId = 0; subsliceApiId < topologyMap.at(deviceIndex).subsliceIndices.size(); subsliceApiId++) {
1168+
if (static_cast<uint32_t>(topologyMap.at(deviceIndex).subsliceIndices[subsliceApiId]) == subslice) {
1169+
subslice = subsliceApiId;
1170+
}
1171+
}
1172+
}
11561173
return true;
11571174
}
11581175
}

level_zero/core/source/device/device_imp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ struct DeviceImp : public Device {
9898
void storeReusableAllocation(NEO::GraphicsAllocation &alloc) override;
9999
NEO::Device *getActiveDevice() const;
100100

101-
bool toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &deviceIndex);
102-
bool toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t deviceIndex);
101+
bool toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t &deviceIndex);
102+
bool toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t deviceIndex);
103103

104104
bool isSubdevice = false;
105105
void *execEnvironment = nullptr;

0 commit comments

Comments
 (0)