Skip to content

Commit 46c7fac

Browse files
Metric Api: zetContextActivateMetricGroups update
Change-Id: Ia3f38e8bfc6176063de36685e16e7a4a21f940c7 Signed-off-by: Robert Krzemien <[email protected]>
1 parent 1c2936d commit 46c7fac

File tree

11 files changed

+165
-13
lines changed

11 files changed

+165
-13
lines changed

level_zero/api/tools/zet_metric.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ zetDeviceActivateMetricGroups(
6262
return L0::Device::fromHandle(hDevice)->activateMetricGroups(count, phMetricGroups);
6363
}
6464

65+
__zedllexport ze_result_t __zecall
66+
zetContextActivateMetricGroups(
67+
zet_context_handle_t hContext,
68+
zet_device_handle_t hDevice,
69+
uint32_t count,
70+
zet_metric_group_handle_t *phMetricGroups) {
71+
return L0::Context::fromHandle(hContext)->activateMetricGroups(hDevice, count, phMetricGroups);
72+
}
73+
6574
__zedllexport ze_result_t __zecall
6675
zetMetricTracerOpen(
6776
zet_device_handle_t hDevice,

level_zero/core/source/context/context.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <level_zero/ze_api.h>
1212

1313
#include "third_party/level_zero/ze_api_ext.h"
14+
#include "third_party/level_zero/zet_api_ext.h"
1415

1516
struct _ze_context_handle_t {
1617
virtual ~_ze_context_handle_t() = default;
@@ -68,6 +69,9 @@ struct Context : _ze_context_handle_t {
6869
virtual ze_result_t createCommandListImmediate(ze_device_handle_t hDevice,
6970
const ze_command_queue_desc_t *desc,
7071
ze_command_list_handle_t *commandList) = 0;
72+
virtual ze_result_t activateMetricGroups(zet_device_handle_t hDevice,
73+
uint32_t count,
74+
zet_metric_group_handle_t *phMetricGroups) = 0;
7175

7276
static Context *fromHandle(ze_context_handle_t handle) { return static_cast<Context *>(handle); }
7377
inline ze_context_handle_t toHandle() { return this; }

level_zero/core/source/context/context_imp.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,10 @@ ze_result_t ContextImp::createCommandListImmediate(ze_device_handle_t hDevice,
144144
return L0::Device::fromHandle(hDevice)->createCommandListImmediate(desc, commandList);
145145
}
146146

147+
ze_result_t ContextImp::activateMetricGroups(zet_device_handle_t hDevice,
148+
uint32_t count,
149+
zet_metric_group_handle_t *phMetricGroups) {
150+
return L0::Device::fromHandle(hDevice)->activateMetricGroups(count, phMetricGroups);
151+
}
152+
147153
} // namespace L0

level_zero/core/source/context/context_imp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ struct ContextImp : Context {
6262
ze_result_t createCommandListImmediate(ze_device_handle_t hDevice,
6363
const ze_command_queue_desc_t *desc,
6464
ze_command_list_handle_t *commandList) override;
65+
ze_result_t activateMetricGroups(zet_device_handle_t hDevice,
66+
uint32_t count,
67+
zet_metric_group_handle_t *phMetricGroups) override;
6568

6669
protected:
6770
DriverHandle *driverHandle = nullptr;

level_zero/tools/test/unit_tests/sources/metrics/linux/test_metric_query_pool_linux.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@ using ::testing::Return;
2222
namespace L0 {
2323
namespace ult {
2424

25-
class MetricQueryPoolLinuxTest : public MetricDeviceFixture,
25+
class MetricQueryPoolLinuxTest : public MetricContextFixture,
2626
public ::testing::Test {
2727
public:
2828
void SetUp() override {
29-
MetricDeviceFixture::SetUp();
29+
MetricContextFixture::SetUp();
3030
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[device->getRootDeviceIndex()]->osInterface = std::make_unique<NEO::OSInterface>();
3131
auto osInterface = device->getOsInterface().get();
3232
osInterface->setDrm(new DrmMock(const_cast<NEO::RootDeviceEnvironment &>(neoDevice->getRootDeviceEnvironment())));
3333
}
3434

3535
void TearDown() override {
36-
MetricDeviceFixture::TearDown();
36+
MetricContextFixture::TearDown();
3737
}
3838
};
3939

level_zero/tools/test/unit_tests/sources/metrics/mock_metric.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ using namespace MetricsLibraryApi;
1212
namespace L0 {
1313
namespace ult {
1414

15-
void MetricDeviceFixture::SetUp() {
15+
void MetricContextFixture::SetUp() {
1616

1717
// Call base class.
18-
DeviceFixture::SetUp();
18+
ContextFixture::SetUp();
1919

2020
// Initialize metric api.
2121
auto &metricContext = device->getMetricContext();
@@ -34,7 +34,7 @@ void MetricDeviceFixture::SetUp() {
3434
metricsDeviceParams.Version.MinorNumber = MetricEnumeration::requiredMetricsDiscoveryMinorVersion;
3535
}
3636

37-
void MetricDeviceFixture::TearDown() {
37+
void MetricContextFixture::TearDown() {
3838

3939
// Restore original metrics library
4040
mockMetricsLibrary->setMockedApi(nullptr);
@@ -45,7 +45,7 @@ void MetricDeviceFixture::TearDown() {
4545
mockMetricEnumeration.reset();
4646

4747
// Call base class.
48-
DeviceFixture::TearDown();
48+
ContextFixture::TearDown();
4949
}
5050

5151
Mock<MetricsLibrary>::Mock(::L0::MetricContext &metricContext) : MetricsLibrary(metricContext) {

level_zero/tools/test/unit_tests/sources/metrics/mock_metric.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ struct Mock<MetricQuery> : public MetricQuery {
139139
MOCK_METHOD(ze_result_t, destroy, (), (override));
140140
};
141141

142-
class MetricDeviceFixture : public DeviceFixture {
142+
class MetricContextFixture : public ContextFixture {
143143

144144
protected:
145145
void SetUp() override;

level_zero/tools/test/unit_tests/sources/metrics/test_metric_enumeration.cpp

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ using ::testing::Return;
2020
namespace L0 {
2121
namespace ult {
2222

23-
using MetricEnumerationTest = Test<MetricDeviceFixture>;
23+
using MetricEnumerationTest = Test<MetricContextFixture>;
2424

2525
TEST_F(MetricEnumerationTest, givenIncorrectMetricsDiscoveryDeviceWhenZetGetMetricGroupIsCalledThenReturnsFail) {
2626

@@ -873,6 +873,92 @@ TEST_F(MetricEnumerationTest, givenValidEventBasedMetricGroupWhenZetDeviceActiva
873873
EXPECT_EQ(zetDeviceActivateMetricGroups(device->toHandle(), 1, &metricGroupHandle), ZE_RESULT_SUCCESS);
874874
}
875875

876+
TEST_F(MetricEnumerationTest, givenValidEventBasedMetricGroupWhenZetContextActivateMetricGroupsIsCalledThenReturnsSuccess) {
877+
878+
// Metrics Discovery device.
879+
metricsDeviceParams.ConcurrentGroupsCount = 1;
880+
881+
// Metrics Discovery concurrent group.
882+
Mock<IConcurrentGroup_1_5> metricsConcurrentGroup;
883+
TConcurrentGroupParams_1_0 metricsConcurrentGroupParams = {};
884+
metricsConcurrentGroupParams.MetricSetsCount = 1;
885+
metricsConcurrentGroupParams.SymbolName = "OA";
886+
metricsConcurrentGroupParams.Description = "OA description";
887+
888+
// Metrics Discovery:: metric set.
889+
Mock<MetricsDiscovery::IMetricSet_1_5> metricsSet;
890+
MetricsDiscovery::TMetricSetParams_1_4 metricsSetParams = {};
891+
metricsSetParams.ApiMask = MetricsDiscovery::API_TYPE_OCL;
892+
metricsSetParams.MetricsCount = 0;
893+
metricsSetParams.SymbolName = "Metric set name";
894+
metricsSetParams.ShortName = "Metric set description";
895+
metricsSetParams.MetricsCount = 1;
896+
897+
// Metrics Discovery:: metric.
898+
Mock<IMetric_1_0> metric;
899+
TMetricParams_1_0 metricParams = {};
900+
metricParams.SymbolName = "Metric symbol name";
901+
metricParams.ShortName = "Metric short name";
902+
metricParams.LongName = "Metric long name";
903+
metricParams.ResultType = MetricsDiscovery::TMetricResultType::RESULT_UINT64;
904+
metricParams.MetricType = MetricsDiscovery::TMetricType::METRIC_TYPE_RATIO;
905+
906+
// One api: metric group handle.
907+
zet_metric_group_handle_t metricGroupHandle = {};
908+
909+
EXPECT_CALL(*mockMetricEnumeration, loadMetricsDiscovery())
910+
.Times(0);
911+
912+
EXPECT_CALL(*mockMetricEnumeration->g_mockApi, MockOpenMetricsDevice(_))
913+
.Times(1)
914+
.WillOnce(DoAll(::testing::SetArgPointee<0>(&metricsDevice), Return(TCompletionCode::CC_OK)));
915+
916+
EXPECT_CALL(*mockMetricEnumeration->g_mockApi, MockCloseMetricsDevice(_))
917+
.Times(1)
918+
.WillOnce(Return(TCompletionCode::CC_OK));
919+
920+
EXPECT_CALL(metricsDevice, GetParams())
921+
.WillRepeatedly(Return(&metricsDeviceParams));
922+
923+
EXPECT_CALL(metricsDevice, GetConcurrentGroup(_))
924+
.Times(1)
925+
.WillOnce(Return(&metricsConcurrentGroup));
926+
927+
EXPECT_CALL(metricsConcurrentGroup, GetParams())
928+
.Times(1)
929+
.WillRepeatedly(Return(&metricsConcurrentGroupParams));
930+
931+
EXPECT_CALL(metricsConcurrentGroup, GetMetricSet(_))
932+
.WillRepeatedly(Return(&metricsSet));
933+
934+
EXPECT_CALL(metricsSet, GetParams())
935+
.WillRepeatedly(Return(&metricsSetParams));
936+
937+
EXPECT_CALL(metricsSet, GetMetric(_))
938+
.Times(1)
939+
.WillOnce(Return(&metric));
940+
941+
EXPECT_CALL(metric, GetParams())
942+
.Times(1)
943+
.WillOnce(Return(&metricParams));
944+
945+
EXPECT_CALL(metricsSet, SetApiFiltering(_))
946+
.WillRepeatedly(Return(TCompletionCode::CC_OK));
947+
948+
// Metric group count.
949+
uint32_t metricGroupCount = 0;
950+
EXPECT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr), ZE_RESULT_SUCCESS);
951+
EXPECT_EQ(metricGroupCount, 1u);
952+
953+
// Metric group handle.
954+
EXPECT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, &metricGroupHandle), ZE_RESULT_SUCCESS);
955+
EXPECT_EQ(metricGroupCount, 1u);
956+
EXPECT_NE(metricGroupHandle, nullptr);
957+
958+
// Activate metric group.
959+
EXPECT_EQ(zetContextActivateMetricGroups(context->toHandle(), device->toHandle(), 1, &metricGroupHandle), ZE_RESULT_SUCCESS);
960+
}
961+
876962
TEST_F(MetricEnumerationTest, givenValidTimeBasedMetricGroupWhenZetDeviceActivateMetricGroupsIsCalledThenReturnsSuccess) {
877963

878964
// Metrics Discovery device.

level_zero/tools/test/unit_tests/sources/metrics/test_metric_query_pool.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ using ::testing::Return;
2424
namespace L0 {
2525
namespace ult {
2626

27-
class MetricQueryPoolTest : public MetricDeviceFixture,
27+
class MetricQueryPoolTest : public MetricContextFixture,
2828
public ::testing::Test {
2929
public:
3030
void SetUp() override {
31-
MetricDeviceFixture::SetUp();
31+
MetricContextFixture::SetUp();
3232
auto executionEnvironment = new NEO::ExecutionEnvironment();
3333
driverHandle.reset(DriverHandle::create(NEO::DeviceFactory::createDevices(*executionEnvironment), L0EnvVariables{}));
3434
}
3535

3636
void TearDown() override {
37-
MetricDeviceFixture::TearDown();
37+
MetricContextFixture::TearDown();
3838
driverHandle.reset();
3939
GlobalDriver = nullptr;
4040
}

level_zero/tools/test/unit_tests/sources/metrics/test_metric_streamer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ using ::testing::Return;
2020
namespace L0 {
2121
namespace ult {
2222

23-
using MetricStreamerTest = Test<MetricDeviceFixture>;
23+
using MetricStreamerTest = Test<MetricContextFixture>;
2424

2525
TEST_F(MetricStreamerTest, givenInvalidMetricGroupTypeWhenZetMetricStreamerOpenIsCalledThenReturnsFail) {
2626

0 commit comments

Comments
 (0)