Skip to content

Commit 7d354c0

Browse files
feature: EUStall metrics calculation supports scopes
Resolves: NEO-15142 Signed-off-by: Matias Cabral <[email protected]>
1 parent 94be802 commit 7d354c0

25 files changed

+2559
-708
lines changed

level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,10 @@ class L0GfxCoreHelper : public NEO::ApiGfxCoreHelper {
105105
virtual void appendPlatformSpecificExtensions(std::vector<std::pair<std::string, uint32_t>> &extensions, const NEO::ProductHelper &productHelper, const NEO::HardwareInfo &hwInfo) const = 0;
106106
virtual std::vector<std::pair<const char *, const char *>> getStallSamplingReportMetrics() const = 0;
107107
virtual void stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) = 0;
108-
virtual bool stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) = 0;
109-
virtual void stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) = 0;
108+
virtual bool stallIpDataMapUpdateFromData(const uint8_t *pRawIpData, std::map<uint64_t, void *> &stallSumIpDataMap) = 0;
109+
virtual void stallIpDataMapUpdateFromMap(std::map<uint64_t, void *> &sourceMap, std::map<uint64_t, void *> &stallSumIpDataMap) = 0;
110+
virtual void stallIpDataMapDeleteSumData(std::map<uint64_t, void *> &stallSumIpDataMap) = 0;
111+
virtual void stallIpDataMapDeleteSumDataEntry(std::map<uint64_t, void *>::iterator it) = 0;
110112
virtual uint32_t getIpSamplingMetricCount() = 0;
111113
virtual uint64_t getIpSamplingIpMask() const = 0;
112114
virtual bool synchronizedDispatchSupported() const = 0;
@@ -164,8 +166,10 @@ class L0GfxCoreHelperHw : public L0GfxCoreHelper {
164166
void appendPlatformSpecificExtensions(std::vector<std::pair<std::string, uint32_t>> &extensions, const NEO::ProductHelper &productHelper, const NEO::HardwareInfo &hwInfo) const override;
165167
std::vector<std::pair<const char *, const char *>> getStallSamplingReportMetrics() const override;
166168
void stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) override;
167-
bool stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) override;
168-
void stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) override;
169+
bool stallIpDataMapUpdateFromData(const uint8_t *pRawIpData, std::map<uint64_t, void *> &stallSumIpDataMap) override;
170+
void stallIpDataMapUpdateFromMap(std::map<uint64_t, void *> &sourceMap, std::map<uint64_t, void *> &stallSumIpDataMap) override;
171+
void stallIpDataMapDeleteSumData(std::map<uint64_t, void *> &stallSumIpDataMap) override;
172+
void stallIpDataMapDeleteSumDataEntry(std::map<uint64_t, void *>::iterator it) override;
169173
uint32_t getIpSamplingMetricCount() override;
170174
uint64_t getIpSamplingIpMask() const override;
171175
bool synchronizedDispatchSupported() const override;

level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_tgllp_to_dg2.inl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,25 @@ uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
119119
}
120120

121121
template <typename Family>
122-
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
122+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumData(std::map<uint64_t, void *> &stallSumIpDataMap) {
123123
return;
124124
}
125125

126126
template <typename Family>
127-
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
127+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumDataEntry(std::map<uint64_t, void *>::iterator it) {
128+
return;
129+
}
130+
131+
template <typename Family>
132+
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromData(const uint8_t *pRawIpData, std::map<uint64_t, void *> &stallSumIpDataMap) {
128133
return false;
129134
}
130135

136+
template <typename Family>
137+
void L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromMap(std::map<uint64_t, void *> &sourceMap, std::map<uint64_t, void *> &stallSumIpDataMap) {
138+
return;
139+
}
140+
131141
// Order of ipDataValues must match stallSamplingReportList
132142
template <typename Family>
133143
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {

level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper_xe2_hpg_and_later.inl

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
8383
}
8484

8585
template <typename Family>
86-
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
86+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumData(std::map<uint64_t, void *> &stallSumIpDataMap) {
8787
for (auto i = stallSumIpDataMap.begin(); i != stallSumIpDataMap.end(); i++) {
8888
StallSumIpDataXeCore_t *stallSumData = reinterpret_cast<StallSumIpDataXeCore_t *>(i->second);
8989
if (stallSumData) {
@@ -94,7 +94,16 @@ void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *>
9494
}
9595

9696
template <typename Family>
97-
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
97+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumDataEntry(std::map<uint64_t, void *>::iterator it) {
98+
StallSumIpDataXeCore_t *stallSumData = reinterpret_cast<StallSumIpDataXeCore_t *>(it->second);
99+
if (stallSumData) {
100+
delete stallSumData;
101+
it->second = nullptr;
102+
}
103+
}
104+
105+
template <typename Family>
106+
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromData(const uint8_t *pRawIpData, std::map<uint64_t, void *> &stallSumIpDataMap) {
98107
constexpr int ipStallSamplingOffset = 3; // Offset to read the first Stall Sampling report after IP Address.
99108
constexpr int ipStallSamplingReportShift = 5; // Shift in bits required to read the stall sampling report data due to the IP address [0-28] bits to access the next report category data.
100109
constexpr int stallSamplingReportCategoryMask = 0xff; // Mask for Stall Sampling Report Category.
@@ -144,6 +153,33 @@ bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *>
144153
return false;
145154
}
146155

156+
template <typename Family>
157+
void L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromMap(std::map<uint64_t, void *> &sourceMap, std::map<uint64_t, void *> &stallSumIpDataMap) {
158+
159+
for (auto &entry : sourceMap) {
160+
uint64_t ip = entry.first;
161+
StallSumIpDataXeCore_t *sourceData = reinterpret_cast<StallSumIpDataXeCore_t *>(entry.second);
162+
if (stallSumIpDataMap.count(ip) == 0) {
163+
StallSumIpDataXeCore_t *newData = new StallSumIpDataXeCore_t{};
164+
memcpy_s(newData, sizeof(StallSumIpDataXeCore_t), sourceData, sizeof(StallSumIpDataXeCore_t));
165+
stallSumIpDataMap[ip] = newData;
166+
} else {
167+
StallSumIpDataXeCore_t *destData = reinterpret_cast<StallSumIpDataXeCore_t *>(stallSumIpDataMap[ip]);
168+
169+
destData->tdrCount += sourceData->tdrCount;
170+
destData->otherCount += sourceData->otherCount;
171+
destData->controlCount += sourceData->controlCount;
172+
destData->pipeStallCount += sourceData->pipeStallCount;
173+
destData->sendCount += sourceData->sendCount;
174+
destData->distAccCount += sourceData->distAccCount;
175+
destData->sbidCount += sourceData->sbidCount;
176+
destData->syncCount += sourceData->syncCount;
177+
destData->instFetchCount += sourceData->instFetchCount;
178+
destData->activeCount += sourceData->activeCount;
179+
}
180+
}
181+
}
182+
147183
// Order of ipDataValues must match stallSamplingReportList
148184
template <typename Family>
149185
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {

level_zero/core/source/xe_hpc_core/l0_gfx_core_helper_xe_hpc_core.cpp

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ uint32_t L0GfxCoreHelperHw<Family>::getIpSamplingMetricCount() {
7777
}
7878

7979
template <>
80-
void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *> &stallSumIpDataMap) {
80+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumData(std::map<uint64_t, void *> &stallSumIpDataMap) {
8181
for (auto i = stallSumIpDataMap.begin(); i != stallSumIpDataMap.end(); i++) {
8282
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(i->second);
8383
if (stallSumData) {
@@ -88,7 +88,16 @@ void L0GfxCoreHelperHw<Family>::stallIpDataMapDelete(std::map<uint64_t, void *>
8888
}
8989

9090
template <>
91-
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *> &stallSumIpDataMap, const uint8_t *pRawIpData) {
91+
void L0GfxCoreHelperHw<Family>::stallIpDataMapDeleteSumDataEntry(std::map<uint64_t, void *>::iterator it) {
92+
StallSumIpData_t *stallSumData = reinterpret_cast<StallSumIpData_t *>(it->second);
93+
if (stallSumData) {
94+
delete stallSumData;
95+
it->second = nullptr;
96+
}
97+
}
98+
99+
template <>
100+
bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromData(const uint8_t *pRawIpData, std::map<uint64_t, void *> &stallSumIpDataMap) {
92101
constexpr int ipStallSamplingOffset = 3; // Offset to read the first Stall Sampling report after IP Address.
93102
constexpr int ipStallSamplingReportShift = 5; // Shift in bits required to read the stall sampling report data due to the IP address [0-28] bits to access the next report category data.
94103
constexpr int stallSamplingReportCategoryMask = 0xff; // Mask for Stall Sampling Report Category.
@@ -148,6 +157,31 @@ bool L0GfxCoreHelperHw<Family>::stallIpDataMapUpdate(std::map<uint64_t, void *>
148157
return stallCntrInfo.flags & overflowDropFlag;
149158
}
150159

160+
template <>
161+
void L0GfxCoreHelperHw<Family>::stallIpDataMapUpdateFromMap(std::map<uint64_t, void *> &sourceMap, std::map<uint64_t, void *> &stallSumIpDataMap) {
162+
163+
for (auto &entry : sourceMap) {
164+
uint64_t ip = entry.first;
165+
StallSumIpData_t *sourceData = reinterpret_cast<StallSumIpData_t *>(entry.second);
166+
if (stallSumIpDataMap.count(ip) == 0) {
167+
StallSumIpData_t *newData = new StallSumIpData_t{};
168+
memcpy_s(newData, sizeof(StallSumIpData_t), sourceData, sizeof(StallSumIpData_t));
169+
stallSumIpDataMap[ip] = newData;
170+
} else {
171+
StallSumIpData_t *destData = reinterpret_cast<StallSumIpData_t *>(stallSumIpDataMap[ip]);
172+
destData->activeCount += sourceData->activeCount;
173+
destData->otherCount += sourceData->otherCount;
174+
destData->controlCount += sourceData->controlCount;
175+
destData->pipeStallCount += sourceData->pipeStallCount;
176+
destData->sendCount += sourceData->sendCount;
177+
destData->distAccCount += sourceData->distAccCount;
178+
destData->sbidCount += sourceData->sbidCount;
179+
destData->syncCount += sourceData->syncCount;
180+
destData->instFetchCount += sourceData->instFetchCount;
181+
}
182+
}
183+
}
184+
151185
// Order of ipDataValues must match stallSamplingReportList
152186
template <>
153187
void L0GfxCoreHelperHw<Family>::stallSumIpDataToTypedValues(uint64_t ip, void *sumIpData, std::vector<zet_typed_value_t> &ipDataValues) {

level_zero/core/test/unit_tests/gen12lp/test_l0_gfx_core_helper_gen12lp.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,32 @@ GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenGetStallSamplingReport
8181
EXPECT_EQ(expectedStallSamplingReportList, l0GfxCoreHelper.getStallSamplingReportMetrics());
8282
}
8383

84-
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapUpdateIsCalledThenFalseIsReturned) {
84+
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapUpdateFromDataIsCalledThenFalseIsReturned) {
8585
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
8686
std::map<uint64_t, void *> stallSumIpDataMap;
87-
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdate(stallSumIpDataMap, nullptr));
87+
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdateFromData(nullptr, stallSumIpDataMap));
88+
}
89+
90+
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapUpdateFromMapIsCalledThenDoesNothing) {
91+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
92+
std::map<uint64_t, void *> stallSourceIpDataMap;
93+
std::map<uint64_t, void *> stallSumIpDataMap;
94+
l0GfxCoreHelper.stallIpDataMapUpdateFromMap(stallSourceIpDataMap, stallSumIpDataMap);
8895
}
8996

9097
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapDeleteIsCalledThenMapisUnchanged) {
9198
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
9299
std::map<uint64_t, void *> stallSumIpDataMap;
93100
size_t mapSizeBefore = stallSumIpDataMap.size();
94-
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
101+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
102+
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
103+
}
104+
GEN12LPTEST_F(L0GfxCoreHelperTestGen12Lp, GivenGen12LpWhenStallIpDataMapDeleteEntryIsCalledThenMapisUnchanged) {
105+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
106+
std::map<uint64_t, void *> stallSumIpDataMap;
107+
size_t mapSizeBefore = stallSumIpDataMap.size();
108+
std::map<uint64_t, void *>::iterator it = stallSumIpDataMap.begin();
109+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it);
95110
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
96111
}
97112

level_zero/core/test/unit_tests/xe2_hpg_core/test_l0_gfx_core_helper_xe2_hpg_core.cpp

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,91 @@ XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe3pWhenCallingisThreadContro
137137
EXPECT_TRUE(l0GfxCoreHelper.isThreadControlStoppedSupported());
138138
}
139139

140-
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenCheckingL0HelperForDeletingIpSamplingEntryWithNullValuesThenMapRemainstheSameSize) {
140+
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenCheckingL0HelperForDeletingIpSamplingMapWithNullValuesThenMapRemainstheSameSize) {
141141
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
142142
std::map<uint64_t, void *> stallSumIpDataMap;
143143
stallSumIpDataMap.emplace(std::pair<uint64_t, void *>(0ull, nullptr));
144-
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
144+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
145145
EXPECT_NE(0u, stallSumIpDataMap.size());
146146
}
147147

148+
#pragma pack(1)
149+
typedef struct StallSumIpDataXeCore {
150+
uint64_t tdrCount;
151+
uint64_t otherCount;
152+
uint64_t controlCount;
153+
uint64_t pipeStallCount;
154+
uint64_t sendCount;
155+
uint64_t distAccCount;
156+
uint64_t sbidCount;
157+
uint64_t syncCount;
158+
uint64_t instFetchCount;
159+
uint64_t activeCount;
160+
} StallSumIpDataXeCore_t;
161+
#pragma pack()
162+
163+
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenCheckingL0HelperForDeletingIpSamplingEntryWithThenMapRemainstheSameSize) {
164+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
165+
std::map<uint64_t, void *> stallSumIpDataMap;
166+
167+
StallSumIpDataXeCore *stallSumData = new StallSumIpDataXeCore;
168+
stallSumIpDataMap.emplace(std::pair<uint64_t, void *>(0ull, stallSumData));
169+
std::map<uint64_t, void *>::iterator it = stallSumIpDataMap.begin();
170+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it);
171+
EXPECT_EQ(1u, stallSumIpDataMap.size());
172+
173+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it); // if entry not found it is skipped
174+
EXPECT_EQ(1u, stallSumIpDataMap.size());
175+
stallSumIpDataMap.clear();
176+
}
177+
178+
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenL0HelperCanAddIPsFromDataThenSuccess) {
179+
180+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
181+
std::map<uint64_t, void *> stallSumIpDataMap;
182+
183+
// Raw reports are 64Bytes, 8 x uint64_t
184+
std::array<uint64_t, 8> ipData = {
185+
0x0000000000000001,
186+
0x0000000000000002,
187+
0x0000000000000003,
188+
0x0000000000000004,
189+
0x0000000000000005,
190+
0x0000000000000006,
191+
0x0000000000000007,
192+
0x0000000000000008};
193+
uint8_t *data = reinterpret_cast<uint8_t *>(ipData.data());
194+
// Call for new IP
195+
l0GfxCoreHelper.stallIpDataMapUpdateFromData(data, stallSumIpDataMap);
196+
// Call for repeated IP
197+
l0GfxCoreHelper.stallIpDataMapUpdateFromData(data, stallSumIpDataMap);
198+
199+
// Delete the sumData
200+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
201+
stallSumIpDataMap.clear();
202+
}
203+
204+
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenL0HelperCanAddIPsFromMapThenSuccess) {
205+
206+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
207+
208+
std::map<uint64_t, void *> stallSourceIpDataMap;
209+
StallSumIpDataXeCore_t *stallSumData = new StallSumIpDataXeCore_t;
210+
stallSourceIpDataMap.emplace(std::pair<uint64_t, void *>(0ull, stallSumData));
211+
212+
std::map<uint64_t, void *> stallSumIpDataMap;
213+
// Call for new IP
214+
l0GfxCoreHelper.stallIpDataMapUpdateFromMap(stallSourceIpDataMap, stallSumIpDataMap);
215+
// Call for repeated IP
216+
l0GfxCoreHelper.stallIpDataMapUpdateFromMap(stallSourceIpDataMap, stallSumIpDataMap);
217+
218+
// Delete the sumData
219+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSourceIpDataMap);
220+
stallSourceIpDataMap.clear();
221+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
222+
stallSumIpDataMap.clear();
223+
}
224+
148225
XE2_HPG_CORETEST_F(L0GfxCoreHelperTestXe2Hpg, GivenXe2HpgWhenCheckingL0HelperForGetIpSamplingIpMaskThenCorrectValueIsReturned) {
149226
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
150227
EXPECT_EQ(0x1fffffffull, l0GfxCoreHelper.getIpSamplingIpMask());

level_zero/core/test/unit_tests/xe_hpc_core/test_l0_gfx_core_helper_xe_hpc_core.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,42 @@ XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenGettingRecordReplayGra
7878
EXPECT_EQ(0u, l0GfxCoreHelper.getPlatformRecordReplayGraphCapabilities());
7979
}
8080

81-
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForDeletingIpSamplingEntryWithNullValuesThenMapRemainstheSameSize) {
81+
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForDeletingIpSamplingMapWithNullValuesThenMapRemainstheSameSize) {
8282
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
8383
std::map<uint64_t, void *> stallSumIpDataMap;
8484
stallSumIpDataMap.emplace(std::pair<uint64_t, void *>(0ull, nullptr));
85-
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
85+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
8686
EXPECT_NE(0u, stallSumIpDataMap.size());
8787
}
8888

89+
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForDeletingIpSamplingEntryWithThenMapRemainstheSameSize) {
90+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
91+
std::map<uint64_t, void *> stallSumIpDataMap;
92+
93+
#pragma pack(1)
94+
typedef struct StallSumIpData {
95+
uint64_t activeCount;
96+
uint64_t otherCount;
97+
uint64_t controlCount;
98+
uint64_t pipeStallCount;
99+
uint64_t sendCount;
100+
uint64_t distAccCount;
101+
uint64_t sbidCount;
102+
uint64_t syncCount;
103+
uint64_t instFetchCount;
104+
} StallSumIpData_t;
105+
#pragma pack()
106+
107+
StallSumIpData_t *stallSumData = new StallSumIpData_t;
108+
stallSumIpDataMap.emplace(std::pair<uint64_t, void *>(0ull, stallSumData));
109+
std::map<uint64_t, void *>::iterator it = stallSumIpDataMap.begin();
110+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it);
111+
EXPECT_EQ(1u, stallSumIpDataMap.size());
112+
113+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it); // if entry not found it is skipped
114+
EXPECT_EQ(1u, stallSumIpDataMap.size());
115+
}
116+
89117
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForGetIpSamplingIpMaskThenCorrectValueIsReturned) {
90118
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
91119
EXPECT_EQ(0x1fffffffull, l0GfxCoreHelper.getIpSamplingIpMask());

level_zero/core/test/unit_tests/xe_hpg_core/test_l0_gfx_core_helper_xe_hpg_core.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,23 @@ XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenGetStallSamplingReport
9393
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallIpDataMapUpdateIsCalledThenFalseIsReturned) {
9494
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
9595
std::map<uint64_t, void *> stallSumIpDataMap;
96-
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdate(stallSumIpDataMap, nullptr));
96+
EXPECT_FALSE(l0GfxCoreHelper.stallIpDataMapUpdateFromData(nullptr, stallSumIpDataMap));
9797
}
9898

9999
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallIpDataMapDeleteIsCalledThenMapisUnchanged) {
100100
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
101101
std::map<uint64_t, void *> stallSumIpDataMap;
102102
size_t mapSizeBefore = stallSumIpDataMap.size();
103-
l0GfxCoreHelper.stallIpDataMapDelete(stallSumIpDataMap);
103+
l0GfxCoreHelper.stallIpDataMapDeleteSumData(stallSumIpDataMap);
104+
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
105+
}
106+
107+
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenStallIpDataMapDeleteEntryIsCalledThenMapisUnchanged) {
108+
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
109+
std::map<uint64_t, void *> stallSumIpDataMap;
110+
size_t mapSizeBefore = stallSumIpDataMap.size();
111+
std::map<uint64_t, void *>::iterator it = stallSumIpDataMap.begin();
112+
l0GfxCoreHelper.stallIpDataMapDeleteSumDataEntry(it);
104113
EXPECT_EQ(mapSizeBefore, stallSumIpDataMap.size());
105114
}
106115

0 commit comments

Comments
 (0)