25#ifndef _GPUMETRICHANDLER_H
26#define _GPUMETRICHANDLER_H
40#include "level_zero/zet_api.h"
45#define COLLECTION_IDLE 0
46#define COLLECTION_INIT 1
47#define COLLECTION_CONFIGED 2
48#define COLLECTION_ENABLED 3
49#define COLLECTION_DISABLED 4
50#define COLLECTION_COMPLETED 5
55typedef struct TMetricNode_S
66typedef struct TMetricGroupNode_S
72 zet_metric_group_properties_t
props;
77typedef struct TMetricGroupInfo_S {
86typedef struct QueryData_S {
92typedef struct QueryState_S {
93 atomic<uint32_t> kernelId{0};
95 std::map<ze_kernel_handle_t, string>
nameMap;
113 uint32_t *totalDevices);
115 uint32_t subdeviceId);
125 int GetMetricCode(
const char *mGroupName,
const char *metricName, uint32_t mtype,
126 uint32_t *mGroupCode, uint32_t *metricCode);
133 GPUMetricHandler(uint32_t driverid, uint32_t deviceid, uint32_t subdeviceid);
136 static int InitMetricGroups(ze_device_handle_t device,
TMetricGroupInfo *mgroups);
137 string GetDeviceName(ze_device_handle_t device);
138 uint8_t *ReadStreamData(
size_t *rawDataSize);
139 uint8_t *ReadQueryData(
QueryData &data,
size_t *rawDataSize, ze_result_t *retStatus);
140 void GenerateMetricData(uint8_t *rawData,
size_t rawDataSize, uint32_t mode);
141 void ProcessMetricDataSet(uint32_t dataSetId, zet_typed_value_t* typedDataList,
142 uint32_t startIdx, uint32_t dataSize,
143 uint32_t metricCount, uint32_t mode);
147 static vector<int> driverList;
148 static vector<ze_device_handle_t> m_deviceList;
149 static vector<GPUMetricHandler> handlerList;
156 string m_dataDumpFileName;
157 string m_dataDumpFilePath;
161 ze_driver_handle_t m_driver;
162 ze_context_handle_t m_context;
163 ze_device_handle_t m_device;
167 uint32_t m_groupType;
170 ze_event_pool_handle_t m_eventPool;
171 ze_event_handle_t m_event;
173 zet_metric_streamer_handle_t m_metricStreamer;
174 zet_metric_query_pool_handle_t m_queryPool;
175 zet_tracer_exp_handle_t m_tracer;
177 volatile int m_status;
178 uint32_t m_numDevices;
179 uint32_t m_numDataSet;
181 uint32_t *m_reportCount;
185typedef struct TMetricDevice_S {
199typedef struct TMetricDeviceHandler_S {
void DestroyMetricDevice()
int GetMetricInfo(const char *name, int type, MetricInfo *data)
int EnableMetricGroup(uint32_t metricGroupCode, uint32_t mtype, int *status)
int EnableEventBasedQuery()
int EnableTimeBasedStream(uint32_t timePeriod, uint32_t numReports)
static GPUMetricHandler * GetInstance(uint32_t driverId, uint32_t deviceId, uint32_t subdeviceId)
uint32_t GetCurGroupCode()
void DisableMetricGroup()
int EnableMetricGroup(const char *metricGroupName, uint32_t mtype, int *status)
int SetControl(uint32_t mode)
int GetMetricInfo(int type, MetricInfo *data)
int GetMetricCode(const char *mGroupName, const char *metricName, uint32_t mtype, uint32_t *mGroupCode, uint32_t *metricCode)
static int InitMetricDevices(DeviceInfo **deviceInfoList, uint32_t *numDeviceInfo, uint32_t *totalDevices)
MetricData * GetMetricData(uint32_t mode, uint32_t *numReports)
zet_metric_query_handle_t metricQuery
zet_metric_query_handle_t metricQuery
std::map< ze_kernel_handle_t, string > nameMap
zet_metric_query_pool_handle_t queryPool
ze_event_pool_handle_t eventPool
GPUMetricHandler * handle
vector< QueryData > queryList
GPUMetricHandler * handler
uint32_t metricHandlerIndex
ze_device_handle_t * ze_device
TMetricGroupInfo * groupList
ze_driver_handle_t * ze_driver
TMetricGroupNode * metricGroupList
uint32_t maxMetricsPerGroup
zet_metric_group_properties_t props
zet_metric_group_handle_t handle
zet_metric_properties_t props
zet_metric_handle_t handle