feature: initial support for MetricGroupGetExportData

Related-To: LOCI-4356, LOCI-4357

Signed-off-by: Joshua Santosh Ranjan <joshua.santosh.ranjan@intel.com>
This commit is contained in:
Joshua Santosh Ranjan
2023-06-22 12:41:54 +00:00
committed by Compute-Runtime-Automation
parent ba4c4a5af0
commit 0853cb71b7
20 changed files with 3175 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2020-2022 Intel Corporation
# Copyright (C) 2020-2023 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
@@ -27,6 +27,7 @@ target_sources(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/test_metric_oa_initialization.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test_metric_ip_sampling_enumeration.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test_metric_ip_sampling_streamer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test_metric_oa_export.cpp
)

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation
* Copyright (C) 2020-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -278,6 +278,17 @@ IAdapter_1_6 *IAdapterGroup_1_6::GetAdapter(uint32_t index) {
return nullptr;
}
IEquation_1_0::~IEquation_1_0() {}
uint32_t IEquation_1_0::GetEquationElementsCount(void) {
UNRECOVERABLE_IF(true);
return 0;
}
TEquationElement_1_0 *IEquation_1_0::GetEquationElement(uint32_t index) {
UNRECOVERABLE_IF(true);
return nullptr;
}
IAdapterGroup_1_6 ::~IAdapterGroup_1_6() {
}

View File

@@ -9,6 +9,7 @@
#include "level_zero/core/source/cmdlist/cmdlist.h"
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
#include "level_zero/include/zet_intel_gpu_metric.h"
#include "level_zero/tools/source/metrics/metric_ip_sampling_source.h"
#include "level_zero/tools/source/metrics/metric_oa_source.h"
#include "level_zero/tools/source/metrics/os_interface_metric.h"
@@ -988,5 +989,69 @@ TEST_F(MetricIpSamplingEnumerationTest, GivenEnumerationIsSuccessfulWhenAppendMe
EXPECT_EQ(zetCommandListAppendMetricMemoryBarrier(commandListHandle), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
}
using MetricExportDataIpSamplingTest = MetricIpSamplingEnumerationTest;
TEST_F(MetricExportDataIpSamplingTest, WhenMetricGroupGetExportDataIsCalledThenReturnSuccess) {
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
for (auto device : testDevices) {
uint32_t metricGroupCount = 0;
zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr);
EXPECT_EQ(metricGroupCount, 1u);
std::vector<zet_metric_group_handle_t> metricGroups;
metricGroups.resize(metricGroupCount);
ASSERT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, metricGroups.data()), ZE_RESULT_SUCCESS);
ASSERT_NE(metricGroups[0], nullptr);
uint8_t dummyRawData = 8;
size_t exportDataSize = 0;
const auto dummyRawDataSize = 1u;
EXPECT_EQ(zetMetricGroupGetExportDataExp(metricGroups[0],
&dummyRawData, dummyRawDataSize, &exportDataSize, nullptr),
ZE_RESULT_SUCCESS);
EXPECT_GE(exportDataSize, 0u);
std::vector<uint8_t> exportDataMem(exportDataSize);
EXPECT_EQ(zetMetricGroupGetExportDataExp(metricGroups[0],
&dummyRawData, dummyRawDataSize, &exportDataSize, exportDataMem.data()),
ZE_RESULT_SUCCESS);
zet_intel_metric_df_gpu_export_data_format_t *exportData = reinterpret_cast<zet_intel_metric_df_gpu_export_data_format_t *>(exportDataMem.data());
EXPECT_EQ(exportData->header.type, ZET_INTEL_METRIC_DF_SOURCE_TYPE_IPSAMPLING);
EXPECT_EQ(dummyRawData, exportDataMem[exportData->header.rawDataOffset]);
}
}
TEST_F(MetricExportDataIpSamplingTest, GivenIncorrectExportDataSizeWhenMetricGroupGetExportDataIsCalledThenErrorIsReturned) {
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
for (auto device : testDevices) {
uint32_t metricGroupCount = 0;
zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr);
EXPECT_EQ(metricGroupCount, 1u);
std::vector<zet_metric_group_handle_t> metricGroups;
metricGroups.resize(metricGroupCount);
ASSERT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, metricGroups.data()), ZE_RESULT_SUCCESS);
ASSERT_NE(metricGroups[0], nullptr);
uint8_t dummyRawData = 0;
size_t exportDataSize = 0;
const auto dummyRawDataSize = 1u;
EXPECT_EQ(zetMetricGroupGetExportDataExp(metricGroups[0],
&dummyRawData, dummyRawDataSize, &exportDataSize, nullptr),
ZE_RESULT_SUCCESS);
EXPECT_GE(exportDataSize, 0u);
exportDataSize -= 1;
std::vector<uint8_t> exportDataMem(exportDataSize);
EXPECT_EQ(zetMetricGroupGetExportDataExp(metricGroups[0],
&dummyRawData, dummyRawDataSize, &exportDataSize, exportDataMem.data()),
ZE_RESULT_ERROR_INVALID_SIZE);
}
}
} // namespace ult
} // namespace L0

File diff suppressed because it is too large Load Diff