refactor: make all metric and group have a metric source

Related-To: NEO-8783


Signed-off-by: Joshua Santosh Ranjan <joshua.santosh.ranjan@intel.com>
This commit is contained in:
Joshua Santosh Ranjan
2024-03-12 12:57:20 +00:00
committed by Compute-Runtime-Automation
parent ff6f308c8b
commit 9ad5445a72
13 changed files with 97 additions and 71 deletions

View File

@@ -43,10 +43,12 @@ class MetricSource {
virtual ze_result_t activateMetricGroupsPreferDeferred(uint32_t count, zet_metric_group_handle_t *phMetricGroups) = 0;
virtual ze_result_t activateMetricGroupsAlreadyDeferred() = 0;
virtual ze_result_t metricProgrammableGet(uint32_t *pCount, zet_metric_programmable_exp_handle_t *phMetricProgrammables) = 0;
virtual ze_result_t metricGroupCreate(const char name[ZET_MAX_METRIC_GROUP_NAME],
const char description[ZET_MAX_METRIC_GROUP_DESCRIPTION],
zet_metric_group_sampling_type_flag_t samplingType,
zet_metric_group_handle_t *pMetricGroupHandle) = 0;
ze_result_t metricGroupCreate(const char name[ZET_MAX_METRIC_GROUP_NAME],
const char description[ZET_MAX_METRIC_GROUP_DESCRIPTION],
zet_metric_group_sampling_type_flag_t samplingType,
zet_metric_group_handle_t *pMetricGroupHandle) {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
};
virtual ~MetricSource() = default;
uint32_t getType() const {
return type;
@@ -118,6 +120,18 @@ struct Metric : _zet_metric_handle_t {
inline zet_metric_handle_t toHandle() { return this; }
};
struct MetricImp : public Metric {
MetricSource &getMetricSource() {
return metricSource;
}
~MetricImp() override = default;
MetricImp(MetricSource &metricSource) : metricSource(metricSource) {}
protected:
MetricSource &metricSource;
};
struct MetricGroup : _zet_metric_group_handle_t {
virtual ~MetricGroup() = default;
MetricGroup() {}
@@ -168,9 +182,11 @@ struct MetricGroupImp : public MetricGroup {
}
~MetricGroupImp() override = default;
MetricGroupImp(MetricSource &metricSource) : metricSource(metricSource) {}
bool isImmutable() { return isPredefined; }
protected:
MetricSource &metricSource;
bool isPredefined = true;
};
struct MetricGroupCalculateHeader {

View File

@@ -29,12 +29,6 @@ ze_result_t MetricDeviceContext::metricGroupCreate(const char name[ZET_MAX_METRI
ze_result_t OaMetricSourceImp::metricProgrammableGet(uint32_t *pCount, zet_metric_programmable_exp_handle_t *phMetricProgrammables) {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
ze_result_t OaMetricSourceImp::metricGroupCreate(const char name[ZET_MAX_METRIC_GROUP_NAME],
const char description[ZET_MAX_METRIC_GROUP_DESCRIPTION],
zet_metric_group_sampling_type_flag_t samplingType,
zet_metric_group_handle_t *pMetricGroupHandle) {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
ze_result_t metricProgrammableGetProperties(
zet_metric_programmable_exp_handle_t hMetricProgrammable,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Intel Corporation
* Copyright (C) 2022-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -93,7 +93,7 @@ void IpSamplingMetricSourceImp::cacheMetricGroup() {
strcpy_s(metricProperties.description, ZET_MAX_METRIC_DESCRIPTION, "IP address");
metricProperties.metricType = ZET_METRIC_TYPE_IP;
strcpy_s(metricProperties.resultUnits, ZET_MAX_METRIC_RESULT_UNITS, "Address");
metrics.push_back(IpSamplingMetricImp(metricProperties));
metrics.push_back(IpSamplingMetricImp(*this, metricProperties));
std::vector<std::pair<const char *, const char *>> metricPropertiesList = {
{"Active", "Active cycles"},
@@ -114,7 +114,7 @@ void IpSamplingMetricSourceImp::cacheMetricGroup() {
for (auto &property : metricPropertiesList) {
strcpy_s(metricProperties.name, ZET_MAX_METRIC_NAME, property.first);
strcpy_s(metricProperties.description, ZET_MAX_METRIC_DESCRIPTION, property.second);
metrics.push_back(IpSamplingMetricImp(metricProperties));
metrics.push_back(IpSamplingMetricImp(*this, metricProperties));
}
cachedMetricGroup = IpSamplingMetricGroupImp::create(*this, metrics);
@@ -654,7 +654,7 @@ std::unique_ptr<MultiDeviceIpSamplingMetricGroupImp> MultiDeviceIpSamplingMetric
return std::unique_ptr<MultiDeviceIpSamplingMetricGroupImp>(new (std::nothrow) MultiDeviceIpSamplingMetricGroupImp(metricSource, subDeviceMetricGroup));
}
IpSamplingMetricImp::IpSamplingMetricImp(zet_metric_properties_t &properties) : properties(properties) {
IpSamplingMetricImp::IpSamplingMetricImp(MetricSource &metricSource, zet_metric_properties_t &properties) : MetricImp(metricSource), properties(properties) {
}
ze_result_t IpSamplingMetricImp::getProperties(zet_metric_properties_t *pProperties) {

View File

@@ -31,12 +31,6 @@ class IpSamplingMetricSourceImp : public MetricSource {
ze_result_t metricProgrammableGet(uint32_t *pCount, zet_metric_programmable_exp_handle_t *phMetricProgrammables) override {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
ze_result_t metricGroupCreate(const char name[ZET_MAX_METRIC_GROUP_NAME],
const char description[ZET_MAX_METRIC_GROUP_DESCRIPTION],
zet_metric_group_sampling_type_flag_t samplingType,
zet_metric_group_handle_t *pMetricGroupHandle) override {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
}
bool isMetricGroupActivated(const zet_metric_group_handle_t hMetricGroup) const;
void setMetricOsInterface(std::unique_ptr<MetricIpSamplingOsInterface> &metricIPSamplingpOsInterface);
static std::unique_ptr<IpSamplingMetricSourceImp> create(const MetricDeviceContext &metricDeviceContext);
@@ -171,9 +165,9 @@ struct MultiDeviceIpSamplingMetricGroupImp : public IpSamplingMetricGroupBase {
std::vector<IpSamplingMetricGroupImp *> subDeviceMetricGroup = {};
};
struct IpSamplingMetricImp : public Metric {
struct IpSamplingMetricImp : public MetricImp {
~IpSamplingMetricImp() override = default;
IpSamplingMetricImp(zet_metric_properties_t &properties);
IpSamplingMetricImp(MetricSource &metricSource, zet_metric_properties_t &properties);
ze_result_t getProperties(zet_metric_properties_t *pProperties) override;
ze_result_t destroy() override {
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2023 Intel Corporation
* Copyright (C) 2020-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -433,7 +433,7 @@ ze_result_t MetricEnumeration::createMetrics(MetricsDiscovery::IMetricSet_1_5 &m
zet_metric_properties_t properties = {};
getL0MetricPropertiesFromMdapiMetric(properties, pSourceMetric);
auto pMetric = OaMetricImp::create(properties);
auto pMetric = OaMetricImp::create(metricSource, properties);
UNRECOVERABLE_IF(pMetric == nullptr);
metrics.push_back(pMetric);
@@ -447,7 +447,7 @@ ze_result_t MetricEnumeration::createMetrics(MetricsDiscovery::IMetricSet_1_5 &m
zet_metric_properties_t properties = {};
getL0MetricPropertiesFromMdapiInformation(properties, pSourceInformation);
auto pMetric = OaMetricImp::create(properties);
auto pMetric = OaMetricImp::create(metricSource, properties);
UNRECOVERABLE_IF(pMetric == nullptr);
metrics.push_back(pMetric);
@@ -1086,8 +1086,8 @@ MetricGroup *OaMetricGroupImp::create(zet_metric_group_properties_t &properties,
return pMetricGroup;
}
Metric *OaMetricImp::create(zet_metric_properties_t &properties) {
auto pMetric = new OaMetricImp();
Metric *OaMetricImp::create(MetricSource &metricSource, zet_metric_properties_t &properties) {
auto pMetric = new OaMetricImp(metricSource);
UNRECOVERABLE_IF(pMetric == nullptr);
pMetric->initialize(properties);
pMetric->isPredefined = true;

View File

@@ -195,7 +195,6 @@ struct OaMetricGroupImp : public MetricGroupImp {
uint32_t getRawReportSize();
const MetricEnumeration &getMetricEnumeration() const;
void setCachedExportDataHeapSize(size_t size);
bool isImmutable() { return isPredefined; }
protected:
void copyProperties(const zet_metric_group_properties_t &source,
@@ -219,16 +218,17 @@ struct OaMetricGroupImp : public MetricGroupImp {
std::vector<zet_metric_group_handle_t> metricGroups;
size_t cachedExportDataHeapSize = 0;
bool isPredefined{};
private:
ze_result_t openForDevice(Device *pDevice, zet_metric_streamer_desc_t &desc,
zet_metric_streamer_handle_t *phMetricStreamer);
};
struct OaMetricImp : public Metric {
struct OaMetricImp : public MetricImp {
~OaMetricImp() override{};
OaMetricImp(MetricSource &metricSource) : MetricImp(metricSource) {}
ze_result_t getProperties(zet_metric_properties_t *pProperties) override;
ze_result_t destroy() override {
@@ -237,7 +237,7 @@ struct OaMetricImp : public Metric {
ze_result_t initialize(const zet_metric_properties_t &sourceProperties);
static Metric *create(zet_metric_properties_t &properties);
static Metric *create(MetricSource &metricSource, zet_metric_properties_t &properties);
bool isImmutable() { return isPredefined; }

View File

@@ -45,10 +45,6 @@ class OaMetricSourceImp : public MetricSource {
ze_result_t activateMetricGroupsPreferDeferred(const uint32_t count,
zet_metric_group_handle_t *phMetricGroups) override;
ze_result_t metricProgrammableGet(uint32_t *pCount, zet_metric_programmable_exp_handle_t *phMetricProgrammables) override;
ze_result_t metricGroupCreate(const char name[ZET_MAX_METRIC_GROUP_NAME],
const char description[ZET_MAX_METRIC_GROUP_DESCRIPTION],
zet_metric_group_sampling_type_flag_t samplingType,
zet_metric_group_handle_t *pMetricGroupHandle) override;
bool isMetricGroupActivated(const zet_metric_group_handle_t hMetricGroup) const;
bool isMetricGroupActivatedInHw() const;
void setUseCompute(const bool useCompute);