Skip to content

Commit f87f05b

Browse files
Metric Api: Renamed MetricTracer to MetricStreamer
Change-Id: I7de16b230685201b0f91b227f17713c3cd49d497 Signed-off-by: Robert Krzemien <[email protected]>
1 parent 278505c commit f87f05b

File tree

18 files changed

+1908
-801
lines changed

18 files changed

+1908
-801
lines changed

level_zero/api/tools/zet_metric.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include "level_zero/tools/source/metrics/metric.h"
1111
#include <level_zero/zet_api.h>
1212

13+
#include "third_party/level_zero/zet_api_ext.h"
14+
1315
extern "C" {
1416

1517
__zedllexport ze_result_t __zecall
@@ -93,6 +95,39 @@ zetMetricTracerReadData(
9395
return L0::MetricTracer::fromHandle(hMetricTracer)->readData(maxReportCount, pRawDataSize, pRawData);
9496
}
9597

98+
ZE_APIEXPORT ze_result_t ZE_APICALL
99+
zetMetricStreamerOpen(
100+
zet_device_handle_t hDevice,
101+
zet_metric_group_handle_t hMetricGroup,
102+
zet_metric_streamer_desc_t *pDesc,
103+
ze_event_handle_t hNotificationEvent,
104+
zet_metric_streamer_handle_t *phMetricStreamer) {
105+
return L0::metricStreamerOpen(hDevice, hMetricGroup, pDesc, hNotificationEvent, phMetricStreamer);
106+
}
107+
108+
ZE_APIEXPORT ze_result_t ZE_APICALL
109+
zetCommandListAppendMetricStreamerMarker(
110+
ze_command_list_handle_t hCommandList,
111+
zet_metric_streamer_handle_t hMetricStreamer,
112+
uint32_t value) {
113+
return L0::CommandList::fromHandle(hCommandList)->appendMetricStreamerMarker(hMetricStreamer, value);
114+
}
115+
116+
ZE_APIEXPORT ze_result_t ZE_APICALL
117+
zetMetricStreamerClose(
118+
zet_metric_streamer_handle_t hMetricStreamer) {
119+
return L0::MetricStreamer::fromHandle(hMetricStreamer)->close();
120+
}
121+
122+
ZE_APIEXPORT ze_result_t ZE_APICALL
123+
zetMetricStreamerReadData(
124+
zet_metric_streamer_handle_t hMetricStreamer,
125+
uint32_t maxReportCount,
126+
size_t *pRawDataSize,
127+
uint8_t *pRawData) {
128+
return L0::MetricStreamer::fromHandle(hMetricStreamer)->readData(maxReportCount, pRawDataSize, pRawData);
129+
}
130+
96131
__zedllexport ze_result_t __zecall
97132
zetMetricQueryPoolCreate(
98133
zet_device_handle_t hDevice,

level_zero/core/source/cmdlist/cmdlist.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#include <level_zero/ze_api.h>
1717
#include <level_zero/zet_api.h>
1818

19+
#include "third_party/level_zero/zet_api_ext.h"
20+
1921
#include <vector>
2022

2123
struct _ze_command_list_handle_t {};
@@ -104,6 +106,8 @@ struct CommandList : _ze_command_list_handle_t {
104106
virtual ze_result_t reset() = 0;
105107

106108
virtual ze_result_t appendMetricMemoryBarrier() = 0;
109+
virtual ze_result_t appendMetricStreamerMarker(zet_metric_streamer_handle_t hMetricStreamer,
110+
uint32_t value) = 0;
107111
virtual ze_result_t appendMetricTracerMarker(zet_metric_tracer_handle_t hMetricTracer,
108112
uint32_t value) = 0;
109113
virtual ze_result_t appendMetricQueryBegin(zet_metric_query_handle_t hMetricQuery) = 0;

level_zero/core/source/cmdlist/cmdlist_imp.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,17 @@ ze_result_t CommandListImp::appendMetricMemoryBarrier() {
3535
return MetricQuery::appendMemoryBarrier(*this);
3636
}
3737

38+
ze_result_t CommandListImp::appendMetricStreamerMarker(zet_metric_streamer_handle_t hMetricStreamer,
39+
uint32_t value) {
40+
return MetricQuery::appendStreamerMarker(*this, hMetricStreamer, value);
41+
}
42+
3843
ze_result_t CommandListImp::appendMetricTracerMarker(zet_metric_tracer_handle_t hMetricTracer,
3944
uint32_t value) {
40-
return MetricQuery::appendTracerMarker(*this, hMetricTracer, value);
45+
46+
zet_metric_streamer_handle_t hMetricStreamer = reinterpret_cast<zet_metric_streamer_handle_t>(hMetricTracer);
47+
48+
return MetricQuery::appendStreamerMarker(*this, hMetricStreamer, value);
4149
}
4250

4351
ze_result_t CommandListImp::appendMetricQueryBegin(zet_metric_query_handle_t hMetricQuery) {

level_zero/core/source/cmdlist/cmdlist_imp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ struct CommandListImp : CommandList {
1818
ze_result_t destroy() override;
1919

2020
ze_result_t appendMetricMemoryBarrier() override;
21+
ze_result_t appendMetricStreamerMarker(zet_metric_streamer_handle_t hMetricStreamer,
22+
uint32_t value) override;
2123
ze_result_t appendMetricTracerMarker(zet_metric_tracer_handle_t hMetricTracer,
2224
uint32_t value) override;
2325
ze_result_t appendMetricQueryBegin(zet_metric_query_handle_t hMetricQuery) override;

level_zero/core/source/event/event.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ struct EventImp : public Event {
4242
uint64_t *hostAddr = static_cast<uint64_t *>(hostAddress);
4343
uint32_t queryVal = Event::STATE_CLEARED;
4444

45-
if (metricTracer != nullptr) {
46-
*hostAddr = metricTracer->getNotificationState();
45+
if (metricStreamer != nullptr) {
46+
*hostAddr = metricStreamer->getNotificationState();
4747
}
4848

4949
this->csr->downloadAllocations();

level_zero/core/source/event/event.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ struct _ze_event_pool_handle_t {};
1919
namespace L0 {
2020
typedef uint64_t FlushStamp;
2121
struct EventPool;
22-
struct MetricTracer;
22+
struct MetricStreamer;
2323

2424
struct Event : _ze_event_handle_t {
2525
virtual ~Event() = default;
@@ -55,8 +55,8 @@ struct Event : _ze_event_handle_t {
5555

5656
bool isTimestampEvent = false;
5757

58-
// Metric tracer instance associated with the event.
59-
MetricTracer *metricTracer = nullptr;
58+
// Metric streamer instance associated with the event.
59+
MetricStreamer *metricStreamer = nullptr;
6060

6161
NEO::CommandStreamReceiver *csr = nullptr;
6262

level_zero/core/test/unit_tests/mocks/mock_cmdlist.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ struct MockCommandList : public CommandList {
239239

240240
ADDMETHOD_NOBASE(appendMetricMemoryBarrier, ze_result_t, ZE_RESULT_SUCCESS, ());
241241

242+
ADDMETHOD_NOBASE(appendMetricStreamerMarker, ze_result_t, ZE_RESULT_SUCCESS,
243+
(zet_metric_streamer_handle_t hMetricStreamer,
244+
uint32_t value));
245+
242246
ADDMETHOD_NOBASE(appendMetricTracerMarker, ze_result_t, ZE_RESULT_SUCCESS,
243247
(zet_metric_tracer_handle_t hMetricTracer,
244248
uint32_t value));

level_zero/tools/source/metrics/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ set(L0_SRCS_TOOLS_METRICS
1010
list(APPEND L0_SRCS_TOOLS_METRICS
1111
${CMAKE_CURRENT_SOURCE_DIR}/metric.cpp
1212
${CMAKE_CURRENT_SOURCE_DIR}/metric_enumeration_imp.cpp
13-
${CMAKE_CURRENT_SOURCE_DIR}/metric_tracer_imp.cpp
13+
${CMAKE_CURRENT_SOURCE_DIR}/metric_streamer_imp.cpp
1414
${CMAKE_CURRENT_SOURCE_DIR}/metric_query_imp.cpp)
1515

1616
if(UNIX)

level_zero/tools/source/metrics/metric.cpp

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ struct MetricContextImp : public MetricContext {
5353
Device &getDevice() override;
5454
MetricsLibrary &getMetricsLibrary() override;
5555
MetricEnumeration &getMetricEnumeration() override;
56-
MetricTracer *getMetricTracer() override;
57-
void setMetricTracer(MetricTracer *pMetricTracer) override;
56+
MetricStreamer *getMetricStreamer() override;
57+
void setMetricStreamer(MetricStreamer *pMetricStreamer) override;
5858
void setMetricsLibrary(MetricsLibrary &metricsLibrary) override;
5959
void setMetricEnumeration(MetricEnumeration &metricEnumeration) override;
6060

@@ -72,7 +72,7 @@ struct MetricContextImp : public MetricContext {
7272
std::unique_ptr<MetricEnumeration> metricEnumeration = nullptr;
7373
std::unique_ptr<MetricsLibrary> metricsLibrary = nullptr;
7474
MetricGroupDomains metricGroupDomains;
75-
MetricTracer *pMetricTracer = nullptr;
75+
MetricStreamer *pMetricStreamer = nullptr;
7676
bool useCompute = false;
7777
};
7878

@@ -118,10 +118,10 @@ MetricsLibrary &MetricContextImp::getMetricsLibrary() { return *metricsLibrary;
118118

119119
MetricEnumeration &MetricContextImp::getMetricEnumeration() { return *metricEnumeration; }
120120

121-
MetricTracer *MetricContextImp::getMetricTracer() { return pMetricTracer; }
121+
MetricStreamer *MetricContextImp::getMetricStreamer() { return pMetricStreamer; }
122122

123-
void MetricContextImp::setMetricTracer(MetricTracer *pMetricTracer) {
124-
this->pMetricTracer = pMetricTracer;
123+
void MetricContextImp::setMetricStreamer(MetricStreamer *pMetricStreamer) {
124+
this->pMetricStreamer = pMetricStreamer;
125125
}
126126

127127
void MetricContextImp::setMetricsLibrary(MetricsLibrary &metricsLibrary) {
@@ -146,7 +146,7 @@ ze_result_t
146146
MetricContextImp::activateMetricGroupsDeferred(const uint32_t count,
147147
zet_metric_group_handle_t *phMetricGroups) {
148148

149-
// Activation: postpone until zetMetricTracerOpen or zeCommandQueueExecuteCommandLists
149+
// Activation: postpone until zetMetricStreamerOpen or zeCommandQueueExecuteCommandLists
150150
// Deactivation: execute immediately.
151151
return phMetricGroups ? metricGroupDomains.activateDeferred(count, phMetricGroups)
152152
: metricGroupDomains.deactivate();
@@ -250,7 +250,7 @@ bool MetricGroupDomains::activateMetricGroupDeferred(const zet_metric_group_hand
250250

251251
// Associate metric group with domain and mark it as not active.
252252
// Activation will be performed during zeCommandQueueExecuteCommandLists (query)
253-
// or zetMetricTracerOpen (time based sampling).
253+
// or zetMetricStreamerOpen (time based sampling).
254254
domains[domain].first = hMetricGroup;
255255
domains[domain].second = false;
256256

@@ -269,7 +269,7 @@ ze_result_t MetricGroupDomains::activate() {
269269
ZET_METRIC_GROUP_SAMPLING_TYPE_EVENT_BASED;
270270

271271
// Activate only event based metric groups.
272-
// Time based metric group will be activated during zetMetricTracerOpen.
272+
// Time based metric group will be activated during zetMetricStreamerOpen.
273273
if (metricGroupEventBased && !metricGroupActive) {
274274

275275
metricGroupActive = activateEventMetricGroup(hMetricGroup);
@@ -347,11 +347,26 @@ ze_result_t metricGroupGet(zet_device_handle_t hDevice, uint32_t *pCount, zet_me
347347
phMetricGroups);
348348
}
349349

350+
ze_result_t metricStreamerOpen(zet_device_handle_t hDevice, zet_metric_group_handle_t hMetricGroup,
351+
zet_metric_streamer_desc_t *pDesc, ze_event_handle_t hNotificationEvent,
352+
zet_metric_streamer_handle_t *phMetricStreamer) {
353+
354+
return MetricStreamer::open(hDevice, hMetricGroup, *pDesc, hNotificationEvent, phMetricStreamer);
355+
}
356+
350357
ze_result_t metricTracerOpen(zet_device_handle_t hDevice, zet_metric_group_handle_t hMetricGroup,
351358
zet_metric_tracer_desc_t *pDesc, ze_event_handle_t hNotificationEvent,
352359
zet_metric_tracer_handle_t *phMetricTracer) {
353360

354-
return MetricTracer::open(hDevice, hMetricGroup, *pDesc, hNotificationEvent, phMetricTracer);
361+
zet_metric_streamer_handle_t *phMetricStreamer = reinterpret_cast<zet_metric_streamer_handle_t *>(phMetricTracer);
362+
zet_metric_streamer_desc_t metricStreamerDesc = {};
363+
364+
metricStreamerDesc.notifyEveryNReports = pDesc->notifyEveryNReports;
365+
metricStreamerDesc.samplingPeriod = pDesc->samplingPeriod;
366+
metricStreamerDesc.stype = ZET_STRUCTURE_TYPE_METRIC_STREAMER_DESC;
367+
metricStreamerDesc.pNext = nullptr;
368+
369+
return MetricStreamer::open(hDevice, hMetricGroup, metricStreamerDesc, hNotificationEvent, phMetricStreamer);
355370
}
356371

357372
} // namespace L0

level_zero/tools/source/metrics/metric.h

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
#include "level_zero/core/source/event/event.h"
1010
#include <level_zero/zet_api.h>
1111

12+
#include "third_party/level_zero/zet_api_ext.h"
13+
1214
#include <vector>
1315

1416
struct _zet_metric_group_handle_t {};
1517
struct _zet_metric_handle_t {};
18+
struct _zet_metric_streamer_handle_t {};
1619
struct _zet_metric_tracer_handle_t {};
1720
struct _zet_metric_query_pool_handle_t {};
1821
struct _zet_metric_query_handle_t {};
@@ -26,7 +29,7 @@ namespace L0 {
2629
struct MetricsLibrary;
2730
struct CommandList;
2831
struct MetricEnumeration;
29-
struct MetricTracer;
32+
struct MetricStreamer;
3033

3134
struct MetricContext {
3235
virtual ~MetricContext() = default;
@@ -38,8 +41,8 @@ struct MetricContext {
3841
virtual Device &getDevice() = 0;
3942
virtual MetricsLibrary &getMetricsLibrary() = 0;
4043
virtual MetricEnumeration &getMetricEnumeration() = 0;
41-
virtual MetricTracer *getMetricTracer() = 0;
42-
virtual void setMetricTracer(MetricTracer *pMetricTracer) = 0;
44+
virtual MetricStreamer *getMetricStreamer() = 0;
45+
virtual void setMetricStreamer(MetricStreamer *pMetricStreamer) = 0;
4346
virtual void setMetricsLibrary(MetricsLibrary &metricsLibrary) = 0;
4447
virtual void setMetricEnumeration(MetricEnumeration &metricEnumeration) = 0;
4548

@@ -97,21 +100,29 @@ struct MetricGroup : _zet_metric_group_handle_t {
97100
virtual ze_result_t closeIoStream() = 0;
98101
};
99102

100-
struct MetricTracer : _zet_metric_tracer_handle_t {
101-
virtual ~MetricTracer() = default;
103+
struct MetricStreamer : _zet_metric_streamer_handle_t {
104+
virtual ~MetricStreamer() = default;
102105

103106
virtual ze_result_t readData(uint32_t maxReportCount, size_t *pRawDataSize,
104107
uint8_t *pRawData) = 0;
105108
virtual ze_result_t close() = 0;
106109

107110
static ze_result_t open(zet_device_handle_t hDevice, zet_metric_group_handle_t hMetricGroup,
108-
zet_metric_tracer_desc_t &desc, ze_event_handle_t hNotificationEvent, zet_metric_tracer_handle_t *phMetricTracer);
109-
static MetricTracer *fromHandle(zet_metric_tracer_handle_t handle) {
110-
return static_cast<MetricTracer *>(handle);
111+
zet_metric_streamer_desc_t &desc, ze_event_handle_t hNotificationEvent, zet_metric_streamer_handle_t *phMetricStreamer);
112+
static MetricStreamer *fromHandle(zet_metric_streamer_handle_t handle) {
113+
return static_cast<MetricStreamer *>(handle);
111114
}
112115

113116
virtual Event::State getNotificationState() = 0;
114-
inline zet_metric_tracer_handle_t toHandle() { return this; }
117+
inline zet_metric_streamer_handle_t toHandle() { return this; }
118+
};
119+
120+
struct MetricTracer : _zet_metric_tracer_handle_t {
121+
virtual ~MetricTracer() = default;
122+
123+
static MetricStreamer *fromHandle(zet_metric_tracer_handle_t handle) {
124+
return MetricStreamer::fromHandle(reinterpret_cast<zet_metric_streamer_handle_t>(handle));
125+
}
115126
};
116127

117128
struct MetricQueryPool : _zet_metric_query_pool_handle_t {
@@ -134,8 +145,8 @@ struct MetricQuery : _zet_metric_query_handle_t {
134145
virtual ze_result_t appendEnd(CommandList &commandList, ze_event_handle_t hCompletionEvent) = 0;
135146

136147
static ze_result_t appendMemoryBarrier(CommandList &commandList);
137-
static ze_result_t appendTracerMarker(CommandList &commandList,
138-
zet_metric_tracer_handle_t hMetricTracer, uint32_t value);
148+
static ze_result_t appendStreamerMarker(CommandList &commandList,
149+
zet_metric_streamer_handle_t hMetricStreamer, uint32_t value);
139150

140151
virtual ze_result_t getData(size_t *pRawDataSize, uint8_t *pRawData) = 0;
141152

@@ -150,7 +161,11 @@ struct MetricQuery : _zet_metric_query_handle_t {
150161
// MetricGroup.
151162
ze_result_t metricGroupGet(zet_device_handle_t hDevice, uint32_t *pCount, zet_metric_group_handle_t *phMetricGroups);
152163

153-
// MetricTracer.
164+
// MetricStreamer.
165+
ze_result_t metricStreamerOpen(zet_device_handle_t hDevice, zet_metric_group_handle_t hMetricGroup,
166+
zet_metric_streamer_desc_t *pDesc, ze_event_handle_t hNotificationEvent,
167+
zet_metric_streamer_handle_t *phMetricStreamer);
168+
154169
ze_result_t metricTracerOpen(zet_device_handle_t hDevice, zet_metric_group_handle_t hMetricGroup,
155170
zet_metric_tracer_desc_t *pDesc, ze_event_handle_t hNotificationEvent,
156171
zet_metric_tracer_handle_t *phMetricTracer);

0 commit comments

Comments
 (0)