diff --git a/src/plugins/intel_gpu/tests/functional/subgraph_tests/tensor_iterator.cpp b/src/plugins/intel_gpu/tests/functional/subgraph_tests/tensor_iterator.cpp index dff05c614bb4fb..4344460990af65 100644 --- a/src/plugins/intel_gpu/tests/functional/subgraph_tests/tensor_iterator.cpp +++ b/src/plugins/intel_gpu/tests/functional/subgraph_tests/tensor_iterator.cpp @@ -244,11 +244,11 @@ class DynamicTensorIteratorTest : public testing::WithParamInterfaceget_input_size(); ++port) { if (itTargetShape != targetInputStaticShapes.end()) { if (nodePtr->get_input_node_ptr(port)->shared_from_this() == inputNode->shared_from_this()) { - inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), *itTargetShape)}); + inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), *itTargetShape, nullptr)}); break; } } else { - inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), default_shape)}); + inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), default_shape, nullptr)}); } } } diff --git a/src/tests/functional/plugin/conformance/test_runner/op_conformance_runner/src/read_ir/read_ir.cpp b/src/tests/functional/plugin/conformance/test_runner/op_conformance_runner/src/read_ir/read_ir.cpp index c9cffe7c8139c8..fa66ac9beb5e44 100644 --- a/src/tests/functional/plugin/conformance/test_runner/op_conformance_runner/src/read_ir/read_ir.cpp +++ b/src/tests/functional/plugin/conformance/test_runner/op_conformance_runner/src/read_ir/read_ir.cpp @@ -120,6 +120,27 @@ uint64_t clip(uint64_t n, uint64_t lower, uint64_t upper) { return std::max(lower, std::min(n, upper)); } +std::pair find_const_ranges(std::map input_info, const std::shared_ptr& function) { + double min = std::numeric_limits::lowest(); + double max = std::numeric_limits::max(); + for (const auto& ops : function->get_ordered_ops()) { + // for (const auto& param : function->get_parameters()) { + // auto in_info = input_info.find(param->get_friendly_name())->second; + // if (!in_info.is_const) { + // continue; + // } + // if (min < in_info.ranges.min) { + // min = in_info.ranges.min; + // } + // if (max > in_info.ranges.max) { + // max = in_info.ranges.max; + // } + } + + std::cout << " RESULTS: MIN " << min << " MAX " << max << std::endl; + return std::pair(min, max); +} + void ReadIRTest::SetUp() { std::pair model_pair; targetDevice = ov::test::utils::target_device; @@ -132,6 +153,7 @@ void ReadIRTest::SetUp() { auto input_info = meta_info.get_input_info(); rel_influence_coef = meta_info.get_graph_priority(); + std::pair ranges = find_const_ranges(input_info, function); auto inputMap = utils::getInputMap(); std::vector> parameter_to_remove; for (const auto& param : function->get_parameters()) { @@ -143,7 +165,7 @@ void ReadIRTest::SetUp() { // auto next_node = param->get_default_output().get_node_shared_ptr(); auto next_node = param->get_default_output().get_target_inputs().begin()->get_node()->shared_from_this(); auto it = inputMap.find(next_node->get_type_info()); - auto tensor = it->second(next_node, function->get_parameter_index(param), param->get_element_type(), param->get_shape()); + auto tensor = it->second(next_node, function->get_parameter_index(param), param->get_element_type(), param->get_shape(), nullptr); auto const_node = std::make_shared(tensor); const_node->set_friendly_name(param->get_friendly_name()); ov::replace_node(param, const_node); diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/base/ov_subgraph.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/base/ov_subgraph.hpp index 316b78a5ddf9ad..5541185cc67943 100644 --- a/src/tests/functional/shared_test_classes/include/shared_test_classes/base/ov_subgraph.hpp +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/base/ov_subgraph.hpp @@ -11,6 +11,8 @@ #include "transformations/convert_precision.hpp" #include "functional_test_utils/skip_tests_config.hpp" +#include "common_test_utils/ov_tensor_utils.hpp" + namespace ov { namespace test { @@ -64,6 +66,9 @@ class SubgraphBaseTest : public ov::test::TestsCommon { std::vector> targetStaticShapes; ElementType inType = ov::element::undefined, outType = ov::element::undefined; + std::vector> inputDataMap; + bool collect_ranges(); + ov::CompiledModel compiledModel; ov::InferRequest inferRequest; diff --git a/src/tests/functional/shared_test_classes/include/shared_test_classes/base/utils/generate_inputs.hpp b/src/tests/functional/shared_test_classes/include/shared_test_classes/base/utils/generate_inputs.hpp index ff1e4fd2fb000b..ffd5770d53a6e1 100644 --- a/src/tests/functional/shared_test_classes/include/shared_test_classes/base/utils/generate_inputs.hpp +++ b/src/tests/functional/shared_test_classes/include/shared_test_classes/base/utils/generate_inputs.hpp @@ -18,7 +18,8 @@ using InputsMap = std::map& node, size_t port, const ov::element::Type& elemType, - const ov::Shape& targetShape)>>; + const ov::Shape& targetShape, + std::shared_ptr inGenRangeData)>>; InputsMap getInputMap(); diff --git a/src/tests/functional/shared_test_classes/src/base/ov_subgraph.cpp b/src/tests/functional/shared_test_classes/src/base/ov_subgraph.cpp index c157d9caf21dbe..60e3d43d94463f 100644 --- a/src/tests/functional/shared_test_classes/src/base/ov_subgraph.cpp +++ b/src/tests/functional/shared_test_classes/src/base/ov_subgraph.cpp @@ -43,7 +43,8 @@ std::ostream& operator <<(std::ostream& os, const InputShape& inputShape) { void SubgraphBaseTest::run() { is_reported = true; - bool isCurrentTestDisabled = ov::test::utils::current_test_is_disabled(); + // bool isCurrentTestDisabled = ov::test::utils::current_test_is_disabled(); + bool isCurrentTestDisabled = false; ov::test::utils::PassRate::Statuses status = isCurrentTestDisabled ? ov::test::utils::PassRate::Statuses::SKIPPED : @@ -51,8 +52,8 @@ void SubgraphBaseTest::run() { summary.setDeviceName(targetDevice); summary.updateOPsStats(function, status, rel_influence_coef); - if (isCurrentTestDisabled) - GTEST_SKIP() << "Disabled test due to configuration" << std::endl; + // if (isCurrentTestDisabled) + // GTEST_SKIP() << "Disabled test due to configuration" << std::endl; // in case of crash jump will be made and work will be continued auto crashHandler = std::unique_ptr(new ov::test::utils::CrashHandler()); @@ -199,8 +200,8 @@ void SubgraphBaseTest::import_export() { summary.setDeviceName(targetDevice); summary.updateOPsStats(function, status, rel_influence_coef); - if (isCurrentTestDisabled) - GTEST_SKIP() << "Disabled test due to configuration" << std::endl; + // if (isCurrentTestDisabled) + // GTEST_SKIP() << "Disabled test due to configuration" << std::endl; // in case of crash jump will be made and work will be continued auto crashHandler = std::unique_ptr(new ov::test::utils::CrashHandler()); @@ -317,8 +318,175 @@ void SubgraphBaseTest::compile_model() { } } +std::vector get_low_max(ov::element::Type temp_type) { + std::vector low_max {std::numeric_limits::lowest(), std::numeric_limits::max()}; + #define CASE(X) \ + case X: \ + low_max[0] = std::numeric_limits::value_type>::lowest(); \ + low_max[1] = std::numeric_limits::value_type>::max(); \ + break; \ + + switch (temp_type) { + CASE(ov::element::Type_t::boolean) + CASE(ov::element::Type_t::bf16) + CASE(ov::element::Type_t::f16) + CASE(ov::element::Type_t::f32) + CASE(ov::element::Type_t::f64) + CASE(ov::element::Type_t::i4) + CASE(ov::element::Type_t::i8) + CASE(ov::element::Type_t::i16) + CASE(ov::element::Type_t::i32) + CASE(ov::element::Type_t::i64) + CASE(ov::element::Type_t::u1) + CASE(ov::element::Type_t::u4) + CASE(ov::element::Type_t::u8) + CASE(ov::element::Type_t::u16) + CASE(ov::element::Type_t::u32) + CASE(ov::element::Type_t::u64) + break; + } + + return low_max; +} + +bool SubgraphBaseTest::collect_ranges() { + inputDataMap = {std::make_shared(ov::test::utils::InputGenerateData(0, 1u << 31)), + std::make_shared(ov::test::utils::InputGenerateData(0, 1u << 31))}; + bool success = true; + + for (const auto& node : function->get_ordered_ops()) { + if (ov::op::util::is_output(node) || + ov::op::util::is_constant(node) || + ov::op::util::is_parameter(node)) { + continue; + } + + auto range = std::vector{}; + auto it = ov::test::utils::inputRanges.find(node->get_type_info()); + if (it != ov::test::utils::inputRanges.end()) { + auto ranges = it->second; + if (ranges.size() != 2) { + throw std::runtime_error("Incorrect size of ranges. It should be 2 (real and int cases)"); + } + range = ranges.at(node->get_element_type().is_real()); + } + + const size_t inNodeCnt = node->get_input_size(); + for (size_t port = 0; port < inNodeCnt; ++port) { + size_t range_id = node->input(port).get_element_type().is_real(); + ov::test::utils::InputGenerateData temp_range; + + if (range.empty()) { + auto limits = get_low_max(node->input(port).get_element_type()); + if (inputDataMap[range_id]->range * inputDataMap[range_id]->resolution > limits[1]) { + temp_range = ov::test::utils::InputGenerateData(0, static_cast(limits[1]), 1); + } else { + temp_range = ov::test::utils::InputGenerateData(0, 1u << 31, 1); + } + } else { + temp_range = range.size() < inNodeCnt ? range.front() : range.at(port); + } + + double node_max = temp_range.start_from + temp_range.range * temp_range.resolution; + double current_max = inputDataMap[range_id]->start_from + inputDataMap[range_id]->range * inputDataMap[range_id]->resolution; + if (inputDataMap[range_id]->start_from == temp_range.start_from) { + // nothing to do - -----start_curr/new+++++++++++++++range*res curr/new----------------------- + // nothing to do - -----start_curr/new+++++++++++++++range*res curr----------range*res new---- + // reduce range - -----start_curr/new+++++++++++++++range*res new-----------range*res curr--- + if (current_max > node_max) { + inputDataMap[range_id]->range = temp_range.range; + inputDataMap[range_id]->resolution = temp_range.resolution; + } + } else if (inputDataMap[range_id]->start_from > temp_range.start_from) { + // nothing to do - -----start_new-----start_curr++++++++++range*res curr/new------------------- + // nothing to do - -----start_new-----start_curr++++++++++range*res curr------range*res new---- + // recalculate range - -----start_new-----start_curr++++++++++range*res new-------range*res curr--- + + // could not find range - -----start_new---range*res new-----start_curr-----range*res curr--- + if (node_max < inputDataMap[range_id]->start_from) { + success = false; + std::cout << " FAIL FIND RANGE: node_max < inputDataMap[range_id]->start_from " << + " NODE: " << node->get_friendly_name() << + " CURRENT start_from: " << std::to_string(inputDataMap[range_id]->start_from) << + " NODE start_from: " << std::to_string(temp_range.start_from) << + " CURRENT max: " << std::to_string(current_max) << + " NODE max: " << std::to_string(node_max) << std::endl; + break; + } + if (current_max > node_max) { + auto new_resolution = temp_range.resolution < inputDataMap[range_id]->resolution ? temp_range.resolution : + inputDataMap[range_id]->resolution; + auto new_range = (node_max - inputDataMap[range_id]->start_from) / new_resolution; + inputDataMap[range_id]->range = (uint32_t)new_range; + inputDataMap[range_id]->resolution = new_resolution; + } + } else if (inputDataMap[range_id]->start_from < temp_range.start_from) { + // reset to new - -----start_curr-----start_new++++++++++range*res curr/new------------------- + // reset to new - -----start_curr-----start_new++++++++++range*res new-------range*res curr--- + // recalculate range - -----start_curr-----start_new++++++++++range*res curr------range*res new---- + + // could not find range - -----start_curr---range*res curr-----start_new-----range*res new--- + if (current_max < temp_range.start_from) { + success = false; + std::cout << " FAIL FIND RANGE: current_max < temp_range.start_from " << + " NODE: " << node->get_friendly_name() << + " CURRENT start_from: " << std::to_string(inputDataMap[range_id]->start_from) << + " NODE start_from: " << std::to_string(temp_range.start_from) << + " CURRENT max: " << std::to_string(current_max) << + " NODE max: " << std::to_string(node_max) << std::endl; + break; + } + if (current_max >= node_max) { + inputDataMap[range_id]->start_from = temp_range.start_from; + inputDataMap[range_id]->range = temp_range.range; + inputDataMap[range_id]->resolution = temp_range.resolution; + } else { + auto new_resolution = temp_range.resolution < inputDataMap[range_id]->resolution ? temp_range.resolution : + inputDataMap[range_id]->resolution; + auto new_range = (current_max - temp_range.start_from) / new_resolution; + inputDataMap[range_id]->range = (uint32_t)round(new_range); + inputDataMap[range_id]->resolution = new_resolution; + inputDataMap[range_id]->start_from = temp_range.start_from; + } + } + } + + if (!success) { + break; + } + } + return success; +} + void SubgraphBaseTest::generate_inputs(const std::vector& targetInputStaticShapes) { inputs.clear(); + bool find_range = collect_ranges(); + if (find_range) { + // auto tmp_start = 0 - static_cast(std::numeric_limits::max() / 2); + auto tmp_max = 1u << 31; + std::cout << " RANGE FOUND \n"; + if (inputDataMap[0]->start_from == 0 && + inputDataMap[0]->range == tmp_max) { + std::cout << " RANGE INT: JUST uint32_t" << std::endl; + } else { + std::cout << " RANGE INT: " << + " START FROM: " << std::to_string(inputDataMap[0]->start_from) << + " RANGE: " << std::to_string(inputDataMap[0]->range) << + " RESOLUTION: " << std::to_string(inputDataMap[0]->resolution) << std::endl; + } + if (inputDataMap[1]->start_from == 0 && + inputDataMap[1]->range == tmp_max) { + std::cout << " RANGE REAL: JUST uint32_t" << std::endl; + } else { + std::cout << " RANGE REAL: " << + " START FROM: " << std::to_string(inputDataMap[1]->start_from) << + " RANGE: " << std::to_string(inputDataMap[1]->range) << + " RESOLUTION: " << std::to_string(inputDataMap[1]->resolution) << std::endl; + } + } else { + std::cout << " RANGE NOT FOUND \n"; + } + auto inputMap = utils::getInputMap(); auto itTargetShape = targetInputStaticShapes.begin(); for (const auto ¶m : function->get_parameters()) { @@ -330,7 +498,12 @@ void SubgraphBaseTest::generate_inputs(const std::vector& targetInput ASSERT_NE(it, inputMap.end()); for (size_t port = 0; port < nodePtr->get_input_size(); ++port) { if (nodePtr->get_input_node_ptr(port)->shared_from_this() == inputNode->shared_from_this()) { - inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), *itTargetShape)}); + if (find_range) { + inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), + *itTargetShape, inputDataMap[node.get_element_type().is_real()])}); + } else { + inputs.insert({param, it->second(nodePtr, port, param->get_element_type(), *itTargetShape, nullptr)}); + } break; } } diff --git a/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp b/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp index 7cbb616336c747..b193a5904a2d31 100644 --- a/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp +++ b/src/tests/functional/shared_test_classes/src/base/utils/generate_inputs.cpp @@ -1138,8 +1138,13 @@ template ov::Tensor generateInput(const std::shared_ptr& node, size_t port, const ov::element::Type& elemType, - const ov::Shape& targetShape) { - return generate(ov::as_type_ptr(node), port, elemType, targetShape); + const ov::Shape& targetShape, + std::shared_ptr inGenRangeData) { + if (inGenRangeData) { + return ov::test::utils::create_and_fill_tensor(elemType, targetShape, *inGenRangeData.get()); + } else { + return generate(ov::as_type_ptr(node), port, elemType, targetShape); + } } } // namespace diff --git a/src/tests/test_utils/common_test_utils/include/common_test_utils/data_utils.hpp b/src/tests/test_utils/common_test_utils/include/common_test_utils/data_utils.hpp index 633cc8f4f60116..1f56461faf3304 100644 --- a/src/tests/test_utils/common_test_utils/include/common_test_utils/data_utils.hpp +++ b/src/tests/test_utils/common_test_utils/include/common_test_utils/data_utils.hpp @@ -238,6 +238,10 @@ void inline fill_data_random(T* pointer, } for (std::size_t i = 0; i < size; i++) { pointer[i] = static_cast(start_from + static_cast(random.Generate(k_range)) / k); + auto l = pointer[i]; + if (l > std::numeric_limits::max()) { + std::cout << " OUT OF RANGE, NODE: " << std::to_string(l) << std::endl; + } } } diff --git a/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/cache/CPU/test_cache_OP.lst b/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/cache/CPU/test_cache_OP.lst index 7e00aa09e2d998..cf426c3feb649d 100644 --- a/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/cache/CPU/test_cache_OP.lst +++ b/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/cache/CPU/test_cache_OP.lst @@ -639,7 +639,6 @@ 981:conformance_subgraph/ReadIRTest.Inference/Extractor=repeat_pattern_Shape=static_IR=a3e1aaa7054d4d046bab4614737c931b25a574051a2f8b79799aaf6fbbd2c2e3_Device=CPU_Config=() 981:conformance_GroupConvolution/ReadIRTest.Inference/Op=GroupConvolution.1_Type=f32_Shape=static_IR=1f71810b04667907bc88c4a1ecc28b9325fde04026b5e56b5eb0e2d6608f3742_Device=CPU_Config=() 980:conformance_Multiply/ReadIRTest.Inference/Op=Multiply.1_Type=f32_Shape=static_IR=2620e86e1e6ce8f0ecb3eebce969f3e7df11f7f86c6f97309aa24993f9036033_Device=CPU_Config=() -977:conformance_subgraph/ReadIRTest.Inference/Extractor=fused_names_Shape=static_IR=017d4b1dac18731e05634414942698ecbc750e306eb86e773ffe5007bfa9feee_Device=CPU_Config=() 974:conformance_subgraph/ReadIRTest.ImportExport/Extractor=repeat_pattern_Shape=static_IR=e00cea4f2ea99f32c11ea265ecc0483554192192bb99f36438dd38de09820888_Device=CPU_Config=() 971:conformance_Convolution/ReadIRTest.Inference/Op=Convolution.1_Type=f32_Shape=static_IR=9cd66958dfe8db471d48d6ea35f1b4547a413fcdc6c61c804a456befcbb09d15_Device=CPU_Config=() 966:conformance_Convolution/ReadIRTest.Inference/Op=Convolution.1_Type=f32_Shape=static_IR=2058548f687014df36b4da1b2644f07fa117d5a1d303a13c4d913a3f979d3ed6_Device=CPU_Config=() @@ -1247,7 +1246,6 @@ 490:conformance_Convert/ReadIRTest.QueryModel/Op=Convert.1_Type=f32_Shape=static_IR=6faa91bd8e7037c9233825cde9313cfd2afafa21ff423a00544eaa36d734332e_Device=CPU_Config=() 489:conformance_subgraph/ReadIRTest.ImportExport/Extractor=repeat_pattern_Shape=static_IR=6453d2955ad3344d5e021f97d71691ddd7c27ffc0d9044b724c9a6b5c20cb427_Device=CPU_Config=() 489:conformance_subgraph/ReadIRTest.ImportExport/Extractor=fused_names_Shape=static_IR=8de274a65748ff76511a53b614cfb33651d2b51720714851a16976fc1ee2b6ea_Device=CPU_Config=() -489:conformance_subgraph/ReadIRTest.ImportExport/Extractor=fused_names_Shape=static_IR=017d4b1dac18731e05634414942698ecbc750e306eb86e773ffe5007bfa9feee_Device=CPU_Config=() 489:conformance_Convolution/ReadIRTest.ImportExport/Op=Convolution.1_Type=f32_Shape=static_IR=0182ad6b02d77803accd2ebe55d87b679950570d1dcfef2940adcbb5fb9f1a24_Device=CPU_Config=() 489:conformance_Concat/ReadIRTest.QueryModel/Op=Concat.1_Type=f32_Shape=static_IR=14598e053d7dee616de43f2b160e780b4bb53decaea53b31db58341464b82e48_Device=CPU_Config=() 488:conformance_subgraph/ReadIRTest.Inference/Extractor=fused_names_Shape=static_IR=f5a74749f6c90dccecbb5e4a7d0fee72cca6247f0084487b5ca7d94d098c9b9b_Device=CPU_Config=() @@ -3085,7 +3083,6 @@ 279:conformance_Add/ReadIRTest.QueryModel/Op=Add.1_Type=f32_Shape=static_IR=c0c33bc628fffda062b4f013c7d41d0f9080f14f41e084ac547099384a9b3d20_Device=CPU_Config=() 278:conformance_subgraph/ReadIRTest.QueryModel/Extractor=fused_names_Shape=static_IR=ab760f0d90b0fef133a0555cb2a5d40fb525aef88e6568c5387a87d7e82f67f8_Device=CPU_Config=() 278:conformance_subgraph/ReadIRTest.QueryModel/Extractor=fused_names_Shape=static_IR=45d612bd5bc0895879f727cffcc13c978977a0aa10dfc726d00d6450faeff068_Device=CPU_Config=() -278:conformance_subgraph/ReadIRTest.QueryModel/Extractor=fused_names_Shape=static_IR=017d4b1dac18731e05634414942698ecbc750e306eb86e773ffe5007bfa9feee_Device=CPU_Config=() 278:conformance_subgraph/ReadIRTest.ImportExport/Extractor=repeat_pattern_Shape=static_IR=6bbd8d7f90e7c210514c28d527eb33bf0889b1fafbd5cf7d9660532f5d6bd940_Device=CPU_Config=() 278:conformance_subgraph/ReadIRTest.ImportExport/Extractor=fused_names_Shape=static_IR=f5d63cfc40e19fff35078633a3354fe5e3a8b6dbadbc89e20747398d87e02176_Device=CPU_Config=() 278:conformance_Reshape/ReadIRTest.QueryModel/Op=Reshape.1_Type=f32_Shape=dynamic_IR=6c1aeced5aaaecd99f3917a0f38e01902dbe81614ae4dc9a99fc09a379990abc_Device=CPU_Config=() diff --git a/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/skip_configs/CPU/expected_failures_OP.csv b/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/skip_configs/CPU/expected_failures_OP.csv index d79fe00ea0cd34..12eb4f80377ac4 100644 --- a/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/skip_configs/CPU/expected_failures_OP.csv +++ b/src/tests/test_utils/functional_test_utils/layer_tests_summary/github/skip_configs/CPU/expected_failures_OP.csv @@ -31,7 +31,6 @@ conformance_subgraph/ReadIRTest.ImportExport/Extractor=fused_names_Shape=static_ conformance_subgraph/ReadIRTest.Inference/Extractor=repeat_pattern_Shape=static_IR=69c68c20edefc8789e62a7cc8a0f8fe7e649f884649ac30833fb5a2ce43c4098_Device=CPU_Config=(),0.0112611 conformance_subgraph/ReadIRTest.Inference/Extractor=fused_names_Shape=static_IR=59eaeea8102953f8ffe85ed1ced2a44ddeed77ec237608b45be0573bb32b1104_Device=CPU_Config=(),0.0106392 conformance_subgraph/ReadIRTest.Inference/Extractor=repeat_pattern_Shape=dynamic_IR=cc2f28d736d3c67fdd13fbea9b8cef7c0b075f06b37034581fc732966421802f_Device=CPU_Config=(),0.0103985 -conformance_subgraph/ReadIRTest.Inference/Extractor=fused_names_Shape=static_IR=017d4b1dac18731e05634414942698ecbc750e306eb86e773ffe5007bfa9feee_Device=CPU_Config=(),0.0100867 conformance_subgraph/ReadIRTest.Inference/Extractor=repeat_pattern_Shape=static_IR=486cda3fac543c53e385e5b26f0932be2c2c67d937dce02e9376ba2956321e5f_Device=CPU_Config=(),0.00993054 conformance_subgraph/ReadIRTest.Inference/Extractor=repeat_pattern_Shape=static_IR=caf20ebc8d39cb23a107a03e819e8ee5b2807fbd311fe65453446251e4b6a611_Device=CPU_Config=(),0.00991679 conformance_subgraph/ReadIRTest.Inference/Extractor=fused_names_Shape=static_IR=3c03ae2ab13dfccc85d9909840eafb6a291b978e9bf859f27886b4a0d3e87ffa_Device=CPU_Config=(),0.00984804