diff --git a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_conformance.py b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_conformance.py index 5144c14f9dc..52c4dc7cb1c 100644 --- a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_conformance.py +++ b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_conformance.py @@ -62,13 +62,14 @@ def parse_arguments(): parser.add_argument("-c", "--ov_config_path", help=ov_config_path_helper, type=str, required=False, default="") parser.add_argument("-s", "--dump_conformance", help=dump_conformance_help, type=int, required=False, default=0) parser.add_argument("-sm", "--shape_mode", help=shape_mode_help, type=str, required=False, default="") - parser.add_argument("-p", "--parallel_devices", help=parallel_help, type=int, required=False, default=0) + parser.add_argument("-p", "--parallel_devices", help=parallel_help, type=bool, required=False, default=False) return parser.parse_args() class Conformance: def __init__(self, device:str, model_path:os.path, ov_path:os.path, type:str, workers:int, - gtest_filter:str, working_dir:os.path, ov_config_path:os.path, shape_mode:str): + gtest_filter:str, working_dir:os.path, ov_config_path:os.path, shape_mode:str, + parallel_devices:bool): self._device = device self._model_path = model_path self._ov_path = ov_path @@ -93,6 +94,7 @@ class Conformance: else: logger.error(f'Incorrect value to set shape mode: {shape_mode}. Please check to get possible values') exit(-1) + self._is_parallel_over_devices = parallel_devices def __download_models(self, url_to_download, path_to_save): _, file_name = os.path.split(urlparse(url_to_download).path) @@ -170,7 +172,7 @@ class Conformance: f"--report_unique_name", f'--output_folder="{parallel_report_dir}"', f'--gtest_filter={self._gtest_filter}', f'--config_path="{self._ov_config_path}"', f'--shape_mode={self._shape_mode}'] - conformance = TestParallelRunner(f"{conformance_path}", command_line_args, self._workers, logs_dir, "", True) + conformance = TestParallelRunner(f"{conformance_path}", command_line_args, self._workers, logs_dir, "", self._is_parallel_over_devices) conformance.run() conformance.postprocess_logs() @@ -240,5 +242,5 @@ if __name__ == "__main__": args.ov_path, args.type, args.workers, args.gtest_filter, args.working_dir, args.ov_config_path, - args.shape_mode) + args.shape_mode, args.parallel_devices) conformance.run(args.dump_conformance) diff --git a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_parallel.py b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_parallel.py index 0d542c44f2f..a13515dd1b2 100644 --- a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_parallel.py +++ b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/run_parallel.py @@ -202,7 +202,7 @@ class TaskManager: return self._idx class TestParallelRunner: - def __init__(self, exec_file_path: os.path, test_command_line: list, worker_num: int, working_dir: os.path, cache_path: os.path, is_parallel_devices: False): + def __init__(self, exec_file_path: os.path, test_command_line: list, worker_num: int, working_dir: os.path, cache_path: os.path, is_parallel_devices=False): self._exec_file_path = exec_file_path self._working_dir = working_dir self._command = self.__init_basic_command_line_for_exec_file(test_command_line) diff --git a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/constants.py b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/constants.py index 5fb7d705861..9d9f0ba4263 100644 --- a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/constants.py +++ b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/constants.py @@ -33,5 +33,10 @@ RELEASE_DIR = "Release" OP_CONFORMANCE = "OP" API_CONFORMANCE = "API" -REL_WEIGHTS_FILENAME = "rel_weights_REPLACE.lst" +DEVICE_ARCHITECTURE_PROPERTY = "DEVICE_ARCHITECTURE" +FULL_DEVICE_PROPERTY = "FULL_DEVICE_NAME" +SUPPORTED_PROPERTIES = "SUPPORTED_PROPERTIES" + + REL_WEIGHTS_REPLACE_STR = "REPLACE" +REL_WEIGHTS_FILENAME = f"rel_weights_{REL_WEIGHTS_REPLACE_STR}.lst" diff --git a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/get_available_devices.py b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/get_available_devices.py index 8667a7e21ca..cf8b8cbe369 100644 --- a/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/get_available_devices.py +++ b/src/tests/ie_test_utils/functional_test_utils/layer_tests_summary/utils/get_available_devices.py @@ -1,7 +1,10 @@ # Copyright (C) 2018-2023 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +from utils.conformance_utils import get_logger +from utils.constants import FULL_DEVICE_PROPERTY, SUPPORTED_PROPERTIES, DEVICE_ARCHITECTURE_PROPERTY +logger = get_logger("get_available_device") try: from openvino.runtime import Core @@ -9,9 +12,7 @@ except: from utils.file_utils import get_ov_path, find_latest_dir import os from utils.constants import PY_OPENVINO, LD_LIB_PATH_NAME - from utils.conformance_utils import get_logger, set_env_variable - - logger = get_logger("get_available_device") + from utils.conformance_utils import set_env_variable script_dir, _ = os.path.split(os.path.abspath(__file__)) ov_bin_path = get_ov_path(script_dir, None, True) @@ -39,5 +40,15 @@ def get_available_devices(target_device = None, exclude_device = None): if target_device is None or target_device in device: if exclude_device in device: continue + supported_metrics = core.get_property(target_device, SUPPORTED_PROPERTIES) + if FULL_DEVICE_PROPERTY in supported_metrics: + if core.get_property(target_device, FULL_DEVICE_PROPERTY) != core.get_property(device, FULL_DEVICE_PROPERTY): + logger.warning(f'Device {device} is different {FULL_DEVICE_PROPERTY} with {target_device} ( : {core.get_property(device, FULL_DEVICE_PROPERTY)} : {core.get_property(target_device, FULL_DEVICE_PROPERTY)} )') + continue + if DEVICE_ARCHITECTURE_PROPERTY in supported_metrics: + if not core.get_property(target_device, DEVICE_ARCHITECTURE_PROPERTY) != core.get_property(device, DEVICE_ARCHITECTURE_PROPERTY): + logger.warning(f'Device {device} is different {DEVICE_ARCHITECTURE_PROPERTY} with {target_device} ( : {core.get_property(device, DEVICE_ARCHITECTURE_PROPERTY)} : {core.get_property(target_device, DEVICE_ARCHITECTURE_PROPERTY)} )') + continue + logger.info(f"{device} is added to device pool") result.append(device) return result