Files
openvino/tests/stress_tests/memcheck_tests/tests_pipelines/tests_pipelines.cpp
T
Ilya Churaev 0c9abf43a9 Updated copyright headers (#15124)
* Updated copyright headers

* Revert "Fixed linker warnings in docs snippets on Windows (#15119)"

This reverts commit 372699ec49.
2023-01-16 11:02:17 +04:00

87 lines
3.9 KiB
C++

// Copyright (C) 2018-2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include "tests_pipelines.h"
#include <string>
#include <math.h>
#define REPORTING_THRESHOLD 1.3
// delimiter used for measurements print. Should be compatible with script parses tests logs
#define MEMCHECK_DELIMITER "\t\t"
MemCheckPipeline::MemCheckPipeline() {
start_measures[VMRSS] = (long) getVmRSSInKB();
start_measures[VMHWM] = start_measures[VMRSS];
start_measures[VMSIZE] = (long) getVmSizeInKB();
start_measures[VMPEAK] = start_measures[VMSIZE];
start_measures[THREADS] = (long) getThreadsNum();
}
std::array<long, MeasureValueMax> MemCheckPipeline::_measure() {
std::array<long, MeasureValueMax> measures;
measures[VMRSS] = (long) getVmRSSInKB();
measures[VMHWM] = (long) getVmHWMInKB();
measures[VMSIZE] = (long) getVmSizeInKB();
measures[VMPEAK] = (long) getVmPeakInKB();
measures[THREADS] = (long) getThreadsNum(); // TODO: resolve *-32295
return measures;
}
std::array<long, MeasureValueMax> MemCheckPipeline::measure() {
std::array<long, MeasureValueMax> measures = _measure();
std::transform(std::begin(measures), std::end(measures), std::begin(start_measures), std::begin(measures),
[](long measure, long start_measure) -> long {
return measure - start_measure;
});
return measures;
}
void MemCheckPipeline::record_measures(const std::string &id) {
std::array<long, MeasureValueMax> measures = measure();
log_debug("[ MEASURE ] " << MEMCHECK_DELIMITER << id);
log_info(util::get_measure_values_headers(MEMCHECK_DELIMITER));
log_info(util::get_measure_values_as_str(measures, MEMCHECK_DELIMITER));
}
std::string MemCheckPipeline::get_reference_record_for_test(std::string test_name, std::string model_name,
std::string precision, std::string target_device) {
std::array<long, MeasureValueMax> measures = measure();
std::stringstream ss;
ss << "Record to update reference config: "
<< "<model path=\"" << model_name <<
"\" precision=\"" << precision <<
"\" test=\"" << test_name <<
"\" device=\"" << target_device <<
"\" vmsize=\"" << (int) (measures[VMSIZE] * REPORTING_THRESHOLD) <<
"\" vmpeak=\"" << (int) (measures[VMPEAK] * REPORTING_THRESHOLD) <<
"\" vmrss=\"" << (int) (measures[VMRSS] * REPORTING_THRESHOLD) <<
"\" vmhwm=\"" << (int) (measures[VMHWM] * REPORTING_THRESHOLD) << "\" />";
return ss.str();
}
TestResult common_test_pipeline(const std::function<std::array<long, MeasureValueMax>()> &test_pipeline,
const std::array<long, MeasureValueMax> &references) {
log_info("Reference values of virtual memory consumption:");
log_info(util::get_measure_values_headers(MEMCHECK_DELIMITER));
log_info(util::get_measure_values_as_str(references, MEMCHECK_DELIMITER));
std::array<long, MeasureValueMax> measures = test_pipeline();
if (measures[VMRSS] > references[VMRSS])
return TestResult(TestStatus::TEST_FAILED,
"Test failed: RSS virtual memory consumption became greater than reference.\n"
"Reference RSS memory consumption: " + std::to_string(references[VMRSS]) + " KB.\n" +
"Current RSS memory consumption: " + std::to_string(measures[VMRSS]) + " KB.\n");
if (measures[VMHWM] > references[VMHWM])
return TestResult(TestStatus::TEST_FAILED,
"Test failed: HWM (peak of RSS) virtual memory consumption is greater than reference.\n"
"Reference HWM of memory consumption: " + std::to_string(references[VMHWM]) + " KB.\n" +
"Current HWM of memory consumption: " + std::to_string(measures[VMHWM]) + " KB.\n");
return TestResult(TestStatus::TEST_OK, "");
}