test: update zello_metrics for programmable apis

Related-To: NEO-11847

Signed-off-by: Joshua Santosh Ranjan <joshua.santosh.ranjan@intel.com>
This commit is contained in:
Joshua Santosh Ranjan
2024-07-09 15:43:26 +00:00
committed by Compute-Runtime-Automation
parent 005b273b1e
commit 99e8cb7b70
5 changed files with 49 additions and 14 deletions

View File

@@ -84,15 +84,9 @@ bool SingleDeviceTestRunner::run() {
executionCtxt->run();
}
EXPECT(status == true);
for (auto collector : collectorList) {
status &= collector->isDataAvailable();
LOG(zmu::LogLevel::DEBUG) << "Data Available : " << std::boolalpha << status << std::endl;
}
EXPECT(status == true);
for (auto workload : workloadList) {
status &= workload->validate();
workload->validate();
}
EXPECT(status == true);
@@ -100,6 +94,16 @@ bool SingleDeviceTestRunner::run() {
collector->showResults();
}
EXPECT(status == true);
for (auto collector : collectorList) {
auto status = collector->isDataAvailable();
if (!status) {
LOG(zmu::LogLevel::INFO) << "[W]Event was not generated !!" << std::endl;
} else {
LOG(zmu::LogLevel::DEBUG) << "Data Available : " << std::boolalpha << status << std::endl;
}
}
for (auto collector : collectorList) {
status &= collector->stop();
}

View File

@@ -115,6 +115,7 @@ class SingleDeviceSingleQueueExecutionCtxt : public ExecutionContext {
SingleDeviceSingleQueueExecutionCtxt(uint32_t deviceIndex, int32_t subDeviceIndex = -1) { initialize(deviceIndex, subDeviceIndex); }
~SingleDeviceSingleQueueExecutionCtxt() override { finalize(); }
bool run() override;
void reset();
ze_driver_handle_t getDriverHandle(uint32_t index) override { return driverHandle; }
ze_context_handle_t getContextHandle(uint32_t index) override { return contextHandle; }
@@ -170,7 +171,7 @@ class AppendMemoryCopyFromHeapToDeviceAndBackToHost : public Workload {
void finalize();
private:
static constexpr size_t allocSize = 4096 + 7; // +7 to break alignment and make it harder
static constexpr size_t allocSize = 4096;
char *heapBuffer1 = nullptr;
char *heapBuffer2 = nullptr;
void *zeBuffer = nullptr;
@@ -224,6 +225,8 @@ class SingleMetricStreamerCollector : public SingleMetricCollector {
public:
SingleMetricStreamerCollector(ExecutionContext *executionCtxt,
const char *metricGroupName);
SingleMetricStreamerCollector(ExecutionContext *executionCtxt,
zet_metric_group_handle_t metricGroup);
~SingleMetricStreamerCollector() override = default;
@@ -244,8 +247,8 @@ class SingleMetricStreamerCollector : public SingleMetricCollector {
zet_metric_streamer_handle_t metricStreamer = {};
ze_event_pool_handle_t eventPool = {};
ze_event_handle_t notificationEvent = {};
uint32_t notifyReportCount = 1;
uint32_t samplingPeriod = 10000;
uint32_t notifyReportCount = 20000;
uint32_t samplingPeriod = 10000000;
uint32_t maxRequestRawReportCount = 5;
};
@@ -254,6 +257,8 @@ class SingleMetricQueryCollector : public SingleMetricCollector {
public:
SingleMetricQueryCollector(ExecutionContext *executionCtxt,
const char *metricGroupName);
SingleMetricQueryCollector(ExecutionContext *executionCtxt,
zet_metric_group_handle_t metricGroup);
~SingleMetricQueryCollector() override = default;

View File

@@ -44,6 +44,13 @@ SingleMetricStreamerCollector::SingleMetricStreamerCollector(ExecutionContext *e
executionCtxt->addActiveMetricGroup(metricGroup);
}
SingleMetricStreamerCollector::SingleMetricStreamerCollector(ExecutionContext *executionCtxt,
zet_metric_group_handle_t metricGroup) : SingleMetricCollector(executionCtxt, metricGroup,
ZET_METRIC_GROUP_SAMPLING_TYPE_FLAG_TIME_BASED) {
executionCtxt->addActiveMetricGroup(metricGroup);
}
bool SingleMetricStreamerCollector::start() {
eventPool = zmu::createHostVisibleEventPool(executionCtxt->getContextHandle(0), executionCtxt->getDeviceHandle(0));
@@ -59,7 +66,7 @@ bool SingleMetricStreamerCollector::start() {
notificationEvent,
&metricStreamer));
// Initial pause
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
return true;
}
@@ -80,6 +87,7 @@ bool SingleMetricStreamerCollector::suffixCommands() {
}
bool SingleMetricStreamerCollector::isDataAvailable() {
auto eventStatus = zeEventQueryStatus(notificationEvent);
zeEventHostReset(notificationEvent);
return eventStatus == ZE_RESULT_SUCCESS;
@@ -100,6 +108,11 @@ void SingleMetricStreamerCollector::showResults() {
VALIDATECALL(zetMetricStreamerReadData(metricStreamer, maxRawReportCount, &rawDataSize, rawData.data()));
LOG(zmu::LogLevel::DEBUG) << "Streamer read raw bytes: " << rawDataSize << std::endl;
if (rawDataSize == 0) {
rawDataSize = (uint32_t)rawData.size();
VALIDATECALL(zetMetricStreamerReadData(metricStreamer, maxRawReportCount, &rawDataSize, rawData.data()));
LOG(zmu::LogLevel::DEBUG) << "Streamer read raw bytes: " << rawDataSize << std::endl;
}
zmu::obtainCalculatedMetrics(metricGroup, rawData.data(), static_cast<uint32_t>(rawDataSize));
}
@@ -113,6 +126,12 @@ SingleMetricQueryCollector::SingleMetricQueryCollector(ExecutionContext *executi
executionCtxt->addActiveMetricGroup(metricGroup);
}
SingleMetricQueryCollector::SingleMetricQueryCollector(ExecutionContext *executionCtxt,
zet_metric_group_handle_t metricGroup) : SingleMetricCollector(executionCtxt, metricGroup,
ZET_METRIC_GROUP_SAMPLING_TYPE_FLAG_EVENT_BASED) {
executionCtxt->addActiveMetricGroup(metricGroup);
}
bool SingleMetricQueryCollector::start() {
eventPool = zmu::createHostVisibleEventPool(executionCtxt->getContextHandle(0), executionCtxt->getDeviceHandle(0));

View File

@@ -90,6 +90,10 @@ bool SingleDeviceSingleQueueExecutionCtxt::finalize() {
return true;
}
void SingleDeviceSingleQueueExecutionCtxt::reset() {
VALIDATECALL(zeCommandListReset(commandList));
}
bool SingleDeviceSingleQueueExecutionCtxt::run() {
// Close command list.

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 Intel Corporation
* Copyright (C) 2022-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -30,7 +30,8 @@ void AppendMemoryCopyFromHeapToDeviceAndBackToHost::initialize() {
deviceDesc.flags = 0;
deviceDesc.pNext = nullptr;
VALIDATECALL(zeMemAllocDevice(executionCtxt->getContextHandle(0), &deviceDesc, allocSize, allocSize, executionCtxt->getDeviceHandle(0), &zeBuffer));
VALIDATECALL(zeMemAllocDevice(executionCtxt->getContextHandle(0), &deviceDesc, allocSize, 1, executionCtxt->getDeviceHandle(0), &zeBuffer));
VALIDATECALL(zeContextMakeMemoryResident(executionCtxt->getContextHandle(0), executionCtxt->getDeviceHandle(0), zeBuffer, allocSize));
}
bool AppendMemoryCopyFromHeapToDeviceAndBackToHost::appendCommands() {
@@ -42,11 +43,13 @@ bool AppendMemoryCopyFromHeapToDeviceAndBackToHost::appendCommands() {
// Copy from heap to device-allocated memory
VALIDATECALL(zeCommandListAppendMemoryCopy(executionCtxt->getCommandList(0), zeBuffer, heapBuffer1, allocSize,
nullptr, 0, nullptr));
VALIDATECALL(zeCommandListAppendBarrier(executionCtxt->getCommandList(0), nullptr, 0, nullptr));
// Copy from device-allocated memory to heap2
VALIDATECALL(zeCommandListAppendMemoryCopy(executionCtxt->getCommandList(0), heapBuffer2, zeBuffer, allocSize,
nullptr, 0, nullptr));
}
return true;
}
@@ -57,6 +60,7 @@ bool AppendMemoryCopyFromHeapToDeviceAndBackToHost::validate() {
void AppendMemoryCopyFromHeapToDeviceAndBackToHost::finalize() {
VALIDATECALL(zeContextEvictMemory(executionCtxt->getContextHandle(0), executionCtxt->getDeviceHandle(0), zeBuffer, allocSize));
VALIDATECALL(zeMemFree(executionCtxt->getContextHandle(0), zeBuffer));
delete[] heapBuffer1;
delete[] heapBuffer2;
@@ -156,7 +160,6 @@ bool CopyBufferToBuffer::appendCommands() {
}
bool CopyBufferToBuffer::validate() {
// Validate.
const bool outputValidationSuccessful = (memcmp(destinationBuffer, sourceBuffer, allocationSize) == 0);