@@ -147,42 +147,49 @@ The following pseudo-code demonstrates how to enumerate Tracer based metric grou
147147 ${t}MetricTracerReadDataExp(hMetricTracer, &rawDataSize, rawData.data());
148148
149149 // decode
150- uint32_t numEntries =0;
151- ${t}MetricTracerDecodeExp(hMetricDecoder, &rawDataSize, rawData.data(), numDecodableMetrics, decodableMetrics.data(), &numEntries, nullptr);
152- std::vector<ze_metric_entry_exp_t> decodedEntries(numEntries)
153- ${t}MetricTracerDecodeExp(hMetricDecoder, &rawDataSize, rawData.data(), numDecodableMetrics, decodableMetrics.data(), &numEntries, decodedEntries.data());
154-
155- for (uint32_t index = 0; index < numEntries; index++) {
156- ${t}_metric_entry_exp_t metricEntry = decodedEntries[index];
157- ${t}_metric_properties_t metricProperties = {};
158- ${t}MetricGetProperties(decodableMetrics[metricEntry.metricIndex], &metricProperties);
159- std::cout << "Component: " << metricProperties.component ". Decodable metric name: " << metricProperties.name;
160- switch (metricProperties.resultType) {
161- case ${T}_VALUE_TYPE_UINT32:
162- case ${T}_VALUE_TYPE_UINT8:
163- case ${T}_VALUE_TYPE_UINT16:
164- std::cout << ".\t value: " << metricEntry.value.ui32 << std::endl;
165- break;
166- case ${T}_VALUE_TYPE_UINT64:
167- std::cout << ".\t value: " << metricEntry.value.ui64 << std::endl;
168- break;
169- case ${T}_VALUE_TYPE_FLOAT32:
170- std::cout << ".\t value: " << metricEntry.value.fp32 << std::endl;
171- break;
172- case ${T}_VALUE_TYPE_FLOAT64:
173- std::cout << ".\t value: " << metricEntry.value.fp64 << std::endl;
174- break;
175- case ${T}_VALUE_TYPE_BOOL8:
176- if( metricEntry.value.b8 ){
177- std::cout << ".\t value: true" << std::endl;
178- else
179- std::cout << ".\t value: false" << std::endl;
150+ uint32_t totalNumEntries = 0;
151+ uint32_t setCount = 0;
152+ ${t}MetricTracerDecodeExp(hMetricDecoder, &rawDataSize, rawData.data(), numDecodableMetrics, decodableMetrics.data(), &setCount, nullptr, &totalNumEntries, nullptr);
153+ std::vector<ze_metric_entry_exp_t> decodedEntries(totalNumEntries)
154+ std::vector<uint32_t> metricEntriesCountPerSet(setCount);
155+ ${t}MetricTracerDecodeExp(hMetricDecoder, &rawDataSize, rawData.data(), numDecodableMetrics, decodableMetrics.data(), &setCount, metricEntriesCountPerSet.data(), &totalNumEntries, decodedEntries.data());
156+
157+ uint32_t setEntryStart = 0;
158+ for (uint8_t setIndex = 0; setIndex < setCount; setIndex++) {
159+ for (uint32_t index = setEntryStart; index < metricEntriesCountPerSet[setIndex]; index++) {
160+ ${t}_metric_entry_exp_t metricEntry = decodedEntries[index];
161+ ${t}_metric_properties_t metricProperties = {};
162+ ${t}MetricGetProperties(decodableMetrics[metricEntry.metricIndex], &metricProperties);
163+ std::cout << "Component: " << metricProperties.component ". Decodable metric name: " << metricProperties.name;
164+ switch (metricProperties.resultType) {
165+ case ${T}_VALUE_TYPE_UINT8:
166+ case ${T}_VALUE_TYPE_UINT16:
167+ case ${T}_VALUE_TYPE_UINT32:
168+ std::cout << ".\t value: " << metricEntry.value.ui32 << std::endl;
169+ break;
170+ case ${T}_VALUE_TYPE_UINT64:
171+ std::cout << ".\t value: " << metricEntry.value.ui64 << std::endl;
172+ break;
173+ case ${T}_VALUE_TYPE_FLOAT32:
174+ std::cout << ".\t value: " << metricEntry.value.fp32 << std::endl;
175+ break;
176+ case ${T}_VALUE_TYPE_FLOAT64:
177+ std::cout << ".\t value: " << metricEntry.value.fp64 << std::endl;
178+ break;
179+ case ${T}_VALUE_TYPE_BOOL8:
180+ if( metricEntry.value.b8 ){
181+ std::cout << ".\t value: true" << std::endl;
182+ else
183+ std::cout << ".\t value: false" << std::endl;
184+ }
185+ break;
186+ default:
187+ break;
180188 }
181- break;
182- default:
183- break;
189+
190+ setEntryStart = metricEntriesCountPerSet[setIndex];
184191 }
185- }
192+ }
186193
187194 // Close metric tracer
188195 ${t}MetricTracerDisableExp(hMetricTracer, true);
0 commit comments